티스토리 뷰

728x90

 


SharedPreferences

• 안드로이드에서 제공하는 데이터베이스

     - 데이터베이스에 관한 이전 글 참고 : [📱Android/💡개념] 20. Database(데이터베이스)

 

[Android/개념] 20. Database(데이터베이스)

Database • 데이터를 여러 사람이 공유하고 사용할 수 있도록 체계화, 통합, 관리해놓은 데이터의 집합. * 데이터 : 디지털화되어있는 자료 • 데이터를 저장하고 관리하는 이유는 나중에 다시 사

apro-developer.tistory.com

• 서버 쪽이 아닌 앱 쪽에서 데이터를 저장할 수 있다.

• 키-벨류(NO_SQL) 방식

• 사용자 기기에 데이터를 담은 파일 저장.

     - 앱 폴더 밑에 파일 형태로 저장하기 때문에 앱을 삭제하면 데이터도 같이 삭제된다.

     - AndroidManifest의 <application> 태그의 속성 allowBackup을 "true"로 하였다면 삭제되지 않을 수도 있다.

• Preference -> 기호, 선호, 환경 설정의 의미를 가짐.

     -> 즉, 사용자의 기호, 선호에 따른 환경 설정 등의 간단한 데이터를 저장하는 용도.

• getSharedPreferences(파일 이름, 모드) 메소드로 SharedPreferences 클래스의 객체 불러와서 사용

     - 모드는 대부분 Context.MODE_PRIVATE 사용. -> 이 앱에서 저장한 데이터를 이 앱에서만 사용.

• 데이터의 생성이나 수정 등의 편집을 위해서 SharedPreferences.Editor 사용.

 

• activity_shared_preference23.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SharedPreference_23">

    <TextView
        android:id="@+id/create"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="#AAAAFF"
        android:gravity="center"
        android:text="create"
        android:textSize="50dp" />

    <TextView
        android:id="@+id/read"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="#FFAAAA"
        android:gravity="center"
        android:text="read"
        android:textSize="50dp" />

    <TextView
        android:id="@+id/update"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="#AAFFAA"
        android:gravity="center"
        android:text="update"
        android:textSize="50dp" />

    <TextView
        android:id="@+id/delete"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="#AAFFFF"
        android:gravity="center"
        android:text="delete"
        android:textSize="50dp" />

</androidx.appcompat.widget.LinearLayoutCompat>

 

• SharedPreference_23.kt

package com.example.fastcampus

import android.content.Context
import android.content.SharedPreferences
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView

class SharedPreference_23 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_shared_preference23)

        // 데이터 생성
        findViewById<TextView>(R.id.create).setOnClickListener {
            val sharedPreferences = getSharedPreferences("testTable", Context.MODE_PRIVATE) // SharedPreferences 객체 생성
            val editor: SharedPreferences.Editor = sharedPreferences.edit() // SharedPreferences.Editor 객체 생성
            editor.putString("key1", "Hi") // 키-벨류 방식으로 데이터 저장1
            editor.putString("key2", "Hello") // 키-벨류 방식으로 데이터 저장2
            editor.commit() // 작업의 마침.
        }

        // 데이터 읽기
        findViewById<TextView>(R.id.read).setOnClickListener {
            val sharedPreferences = getSharedPreferences("testTable", Context.MODE_PRIVATE) // SharedPreferences 객체 생성
            val value1 = sharedPreferences.getString("key1", "Wrong1") // 해당 키에 맞는 데이터 읽기. 없을 경우 기본 값 출력
            val value2 = sharedPreferences.getString("key2", "Wrong2") // 해당 키에 맞는 데이터 읽기. 없을 경우 기본 값 출력
            Log.d("testt", value1!!)
            Log.d("testt", value2!!)
        }

        // 데이터 수정
        findViewById<TextView>(R.id.update).setOnClickListener {
            val sharedPreferences = getSharedPreferences("testTable", Context.MODE_PRIVATE) // SharedPreferences 객체 생성
            val editor: SharedPreferences.Editor = sharedPreferences.edit() // SharedPreferences.Editor 객체 생성
            editor.putString("key1", "Hi Hi") // 데이터 수정
            editor.putString("key2", "Hello Hello") // 데이터 수정
            editor.commit() // 작업의 마침.
        }

        // 데이터 삭제
        findViewById<TextView>(R.id.delete).setOnClickListener {
            val sharedPreferences = getSharedPreferences("testTable", Context.MODE_PRIVATE) // SharedPreferences 객체 생성
            val editor: SharedPreferences.Editor = sharedPreferences.edit() // SharedPreferences.Editor 객체 생성
            editor.clear() // 저장한 데이터 모두 삭제
            editor.commit() // 작업의 마침.
        }
    }
}

 

• 결과

데이터 create, update, delete를 차례대로 한 모습. 각 차례마다 데이터 read로 데이터를 읽어 Logcat에 출력하였다.

 

앱을 종료 후 다시 켜더라도, 생성한 데이터는 삭제하지 않는 한 남아있다.

 

 

 

 

 

 

 

 

이 글은

패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online

강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.

 


728x90
댓글
공지사항