Data Type
- Database (SQLlite)
- Preference
- File
SQLlite
Table로 저장됨
ID | NAME | ADDR |
1 | kim | seoul |
2 | lee | incheon |
Preference
key <-> value
영속저장(File) - xml (기초타입 data만 가능)
대개 설정 data를 사용
Activity.getPreferences(int mode)
Context.getSharedPreferences(String name, int mode)
getPreferences(int mode) > 단일 액티비티에서 사용하며 매개변수로는 액티비티명(File명)을 보낸다.
getSharedPreferences(String name, int mode) > 앱 전체의 데이터를 키 값 형태로 저장할 때 사용
액티비티의 데이터 저장
val sharedPref = getPreferences(Context.MODE_PRIVATE)
앱 전체의 데이터를 키-값 형태로 저장하려고 객체를 얻을땐 아래의 코드를 이용
val sharePref = getSharedPreferences("myprefs", Context.MODE_PRIVATE)
데이터를 저장하려면 다음과 같은 SharedPreferences.Editor 클래스의 함수 이용
- putBoolean(String key, boolean value)
- putInt(String key, int value)
- putFloat(String key, float value)
- putLong(String key, long value)
- putString(String key, String value)
val data1 = sharedPref.getString("data1", "world)
데이터의 저장을 위해 최종 commit()혹은 apply()함수를 호출한다. (동기, 비동기) 성공 여부를 확인해야 하는 경우에만 commit()사용
특성 | commit() | apply() |
실행 타입 | 동기 | 비동기 |
반환값 | 성공/실패여부 boolean | 없음 |
SharedPreference · aabc88/android_Kotlin@de7d749
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
github.com
특성 | SharedPreferences | Preferences DataStore |
API타입 | 동기식(+비동기 콜백) | 완전 비동기(코루틴) |
메인 스레드 안정성 | 위험(commit() 사용 시 블로킹) | 안전 (메인스레드 블로킹 없음) |
데이터일관성 | 부분보장 | 트랜잭션기반 완전보장 |
다중프로세스 | 지원부족 | 안정적지원 |
업데이트감지 | 리스너패턴(콜백) | Flow를 통한 반응형 스트림 |
에러처리 | 제한적 | 구조화된 예외처리 |
타입안정성 | 없음 | 키 정의를 통한 기본적타입 안정성 |
implementation("androidx.datastore:datastore-preferences:1.1.6")
-------------------------------------------------------------------
Datastore객체획득
val dataStore: DataStore<Preferences> by preferencesDataStore("my_prefs")
-------------------------------------------------------------------
stringPreferencesKey("key")
int "
double " 등
-------------------------------------------------------------------
val USER_NAME = stringPreferencesKey("user_name")
-------------------------------------------------------------------
데이터 저장
dataStore.edit { preferences ->
preferences[USER_NAME] = "kim"
}
데이터 획득
dataStore.data.collect{}
https://github.com/aabc88/android_Kotlin/commit/f668e18a54ea3a4e5ec4718bb6104b35a9df0d2b
DataStore, Coroutine · aabc88/android_Kotlin@f668e18
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
github.com
File
안드로이드에서 파일을 다룰 땐 대부분 java.io패키지에서 제공하는 클래스를 이용.
- File : 파일 및 디렉터리를 지칭하는 클래스
- FileInputStream / FileOutputStream : 파일에서 바이트 스트림으로 데이터를 읽거나 쓰는 클래스
- FileReader / FileWriter : 파일에서 문자열 스트림으로 데이터를 읽거나 쓰는 클래스
'Android' 카테고리의 다른 글
Camera (0) | 2025.05.13 |
---|---|
ADB로 APK 설치하기 (0) | 2024.12.01 |
[Android] BindingAdapter (0) | 2022.12.12 |
[Android] MVVM 패턴 (feat. DataBinding) (0) | 2022.12.12 |