티스토리 뷰
SharedPreferences
• 안드로이드에서 제공하는 데이터베이스
- 데이터베이스에 관한 이전 글 참고 : [📱Android/💡개념] 20. Database(데이터베이스)
• 서버 쪽이 아닌 앱 쪽에서 데이터를 저장할 수 있다.
• 키-벨류(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() // 작업의 마침.
}
}
}
• 결과
이 글은
패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online
강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.
'📱 Android > 💡 개념' 카테고리의 다른 글
[Android/개념] 23. Network (0) | 2022.11.11 |
---|---|
[Android/개념] 22. Room (0) | 2022.11.10 |
[Android/개념] 20. Database(데이터베이스) (0) | 2022.11.09 |
[Android/개념] 19. ViewPager & TabLayout (0) | 2022.11.09 |
[Android/개념] 18. RecyclerView (0) | 2022.11.09 |