반응형
SharedPreferences
https://developer.android.com/training/data-storage/shared-preferences?hl=ko
위 링크를 타고 들어가서 한번 보면 SharedPreferences API를 어떻게 사용하는지 알 수 있다.
하지만.. 필자는 저걸 보고 뭐지.. 무슨말이지 했었다.
나와 같은 사람이 있을것 같아 삽질과 구글링으로 이해하고 정리한 글을 올려본다
SharedPreferences이란?
간단한 데이터를 저장하고 불러올 수 있다.
앱을 꺼도 데이터가 유지된다는 점에서 간편한 데이터베이스 역할을 할 수 있다.
DB를 사용하기 부담스러운 경우, 안드로이드에서 기본적으로 제공하는 SharedPreferences를 사용할 수 있다.
SharedPreferences의 특징
- 보통 초기 설정값이나 자동 로그인 여부 등 간단한 값을 저장하기 위해 사용
- Application에 파일 형태로 데이터를 저장함
- Application이 삭제되기 전까지 저장한 데이터가 보존됨
- Key-value 방식
MODE 종류
- MODE_PRIVATE : 생성한 Application에서만 사용 가능하다.
- MODE_WORLD_READABLE : 외부 App에서 사용 가능, But 읽기만 가능
- MODE_WORLD_WRITEABLE : 외부 App에서 사용 가능, 읽기/쓰기 가능
SharedPreferences 사용 방법 [코틀린(Kotlin) 코드]
변수선언
lateinit var pref: SharedPreferences
lateinit var editor: SharedPreferences.Editor
초기화
pref = getPreferences(Context.MODE_PRIVATE)
editor = pref.edit()
원하는 값 저장하기
editor.putString("InputData","save Data")
editor.apply()
위 코드는 "InputData" key에 "save Data"라는 값을 저장한다고 가정했을 때의 코드이다.
무조건 editor.apply()를 해줘야 저장이 된다..
필자는 저걸 안 해줘서 삽질을 했다.. 😭
💎예제 코드💎
[activity_main.xml]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:background="@color/white"
android:gravity="center"
tools:context=".MainActivity">
<EditText
android:id="@+id/edit"
android:hint="원하는 값 입력"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn1"
android:text="저장"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout >
[MainActivity]
class MainActivity : AppCompatActivity() {
lateinit var pref: SharedPreferences
lateinit var editor: SharedPreferences.Editor
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 1. Shared Preference 초기화
pref = getPreferences(Context.MODE_PRIVATE)
editor = pref.edit()
// 2. 레이아웃 변수 초기화
var edit : EditText = findViewById(R.id.edit)
var btn1 : Button = findViewById(R.id.btn1)
// 3. 저장해둔 값 불러오기 -> 저장된 값이 없으면 "" 로 들고옴
var inputData = pref.getString("InputData","")
// 4. 앱을 새로 켜면 이전에 저장해둔 값이 표시됨
edit.setText(inputData.toString())
// 5. 각 버튼 클릭시 새로운 값 저장
btn1.setOnClickListener(View.OnClickListener {
// (key : InputData, value : EditText에 입력한 데이터)
editor.putString("InputData",edit.text.toString())
editor.apply();
})
}
}
반응형
'Tools > Android Studio' 카테고리의 다른 글
[ Android Studio] 안드로이드 어댑터(Adapter)와 어댑터뷰(Adapter View)란? 어댑터(Adapter) 개념 (2) | 2021.10.27 |
---|---|
[Android Studio] 안드로이드 스튜디오 (Android Studio) 프로젝트 자동 열기 해제 (0) | 2021.10.26 |
[ Android Studio ] 안드로이드 수평 스크롤뷰 (HorizontalScrollView) (0) | 2021.10.23 |
[ Android Studio ] 안드로이드 스크롤뷰 (ScrollView) (0) | 2021.10.23 |
[ Android Studio] 안드로이드 스튜디오(Android Studio) 액션바(action Bar) 없애는 방법! 타이틀바 없애는 방법 (2) | 2021.10.21 |