반응형
SharedPreferences란?
DB에 저장해야할 정도의 데이터의 양이 많으것이 아닌 간단한 설정값이나 문자열과 같은것을 저장하기 위해 DB의 사용이 부담될때 SharedPreferences를 사용하는것이 적합함
SharedPreferences의 특징
- 초기 설정값이나 자동 로그인 여부 등 간단한 값을 DB에 넣지 않고 저장하기 위해 사용
- key-value방식을 사용
- 저장 경로: data/data/패키지명/shared_prefs/SharedPreference명.xml 에 저장.
MainActivity.kt
class MainActivity : AppCompatActivity() {
val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
val sharedPreferences = getSharedPreferences("Info", MODE_PRIVATE)
/*
public abstract SharedPreferences getSharedPreferences (String name, int mode)
-> 'name' 내용을 검색하고 유지하여 해당 값을 검색하고 수정할 수 있는 sharedpreferneces를 반환
name -> String : 원하는 기본 설정 파일
mode -> int : 작동 모드 .MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, MODE_APPEND
MODE_PRIVATE -> 파일 생성 모드: 생성된 파일은 호출 애플리케이션
(또는 동일한 사용자 ID를 공유하는 모든 애플리케이션)에서만 액세스할 수 있는 기본 모드입니다.
*/
with(binding){
//데이터 저장하기
buttonSave.setOnClickListener {
val editor : SharedPreferences.Editor = sharedPreferences.edit()
with(binding){
editor.putString("infoId",editTextId.text.toString()) //값 입력
editor.putString("infoPassword",editTextPassword.text.toString()) //값 입력
editor.commit() //저장
}
}
//데이터 불러오기
buttonLoad.setOnClickListener {
val id = sharedPreferences.getString("infoId","id")
val password = sharedPreferences.getString("infoPassword","password")
Log.d("sharedpreferences","저장된 값은"+ id)
Log.d("sharedpreferences","저장된 값은"+ password)
}
//데이터 삭제하기
buttonDelete.setOnClickListener {
val editor = sharedPreferences.edit()
editor.remove("infoId")
editor.remove("infoPassword")
editor.commit()
// 삭제된 후 값을 받았을때
val id = sharedPreferences.getString("infoId","id")
val password = sharedPreferences.getString("infoPassword","password")
textViewId.setText("근육이 입력한 id : " + id)
textViewPassword.setText("근육이 입력한 password : " + password)
// 로그를 찍어보면 삭제됨을 알 수있다.
Log.d("sharedpreferences","저장된 값은 "+ id)
Log.d("sharedpreferences","저장된 값은 "+ password)
}
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<EditText
android:id="@+id/editTextId"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginStart="100dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="100dp"
android:ems="10"
android:hint="아이디를 입력하세요."
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.487"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editTextPassword"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginStart="100dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="100dp"
android:ems="10"
android:hint="비밀번호를 입력하세요."
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextId" />
<Button
android:id="@+id/buttonSave"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginTop="23dp"
android:layout_marginEnd="100dp"
android:text="값 저장하기"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextPassword" />
<Button
android:id="@+id/buttonLoad"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="100dp"
android:text="값 불러오기"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/buttonSave" />
<Button
android:id="@+id/buttonDelete"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="100dp"
android:text="값 삭제하기"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/buttonLoad" />
<TextView
android:id="@+id/textViewId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/buttonDelete" />
<TextView
android:id="@+id/textViewPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewId" />
</androidx.constraintlayout.widget.ConstraintLayout>
기본적으로 우리가 활용하면서 sharedpreferences의 사용 사례는 간단한 값들을 저장하기 위합입니다.
대표적으로 세가지의 형태로 저장하기, 불러오기, 삭제하기 로 나눠집니다.
Log로 처음에 찍어보다가 직접 표현을 했습니다.
값 저장하기
데이터를 ID와 Password를 진행해 sharedpreference를 이용하여 저장한다
ID : hello , Password : mynameisgyroh
데이터 불러오기
sharedpreference에 저장된 데이터를 불러왔을때 아래 텍스트에
저장된 ID인 hello와 Password인 mynameisgyroh가 불러와진다.
값 삭제하기
[참조]
https://developer.android.com/training/data-storage/shared-preferences?hl=ko
반응형
'Android & Kotlin > Android' 카테고리의 다른 글
[코틀린] 안드로이드 플로팅버튼 이미지 조절, 버튼 클릭시 최상단, 스크롤이벤트 (0) | 2022.12.29 |
---|---|
viewpager2 이미지 자동 스크롤 (recyclerview활용) (2) | 2022.12.28 |
[kotlin] 안드로이드 액티비티 생명주기 이해 및 예제 (0) | 2022.12.02 |
Android Palette Component 정리 4. Helpers, Google, Legacy (0) | 2022.11.22 |
Android Palette Component 정리 4. Containers (0) | 2022.11.22 |
댓글