Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

DataStore

비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장하여 SharedPreferences의 일부 단점을 극복합니다.
최근 업데이트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
2021년 3월 10일 - - - 1.0.0-alpha08

종속 항목 선언

DataStore의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

DataStore에는 환경설정 및 Proto 등 두 가지 구현이 있습니다. 둘 중 하나를 선택합니다. 두 구현 중 하나에 Android 독립적인 종속 항목을 추가할 수도 있습니다.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 구현의 종속 항목을 추가합니다.

유형

// Typed DataStore (Typed API surface, such as Proto)
dependencies {
  implementation "androidx.datastore:datastore:1.0.0-alpha08"

  // optional - RxJava2 support
  implementation "androidx.datastore:datastore-rxjava2:1.0.0-alpha08"

  // optional - RxJava3 support
  implementation "androidx.datastore:datastore-rxjava3:1.0.0-alpha08"
}
// Alternatively - use the following artifact without an Android dependency.
dependencies {
  implementation "androidx.datastore:datastore-core:1.0.0-alpha08"
}

환경설정

// Preferences DataStore (SharedPreferences like APIs)
dependencies {
  implementation "androidx.datastore:datastore-preferences:1.0.0-alpha08"

  // optional - RxJava2 support
  implementation "androidx.datastore:datastore-preferences-rxjava2:1.0.0-alpha08"

  // optional - RxJava3 support
  implementation "androidx.datastore:datastore-preferences-rxjava3:1.0.0-alpha08"
}
// Alternatively - use the following artifact without an Android dependency.
dependencies {
  implementation "androidx.datastore:datastore-preferences-core:1.0.0-alpha08"
}

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 만들기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새 문제 만들기

자세한 내용은 Issue Tracker 문서를 참고하세요.

버전 1.0.0

버전 1.0.0-alpha08

2021년 3월 10일

androidx.datastore:datastore-*:1.0.0-alpha08이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.

API 변경사항

  • 이제 컨텍스트에 따라 dataStorepreferencesDataStore 속성 위임에 이전을 추가할 수 있습니다. (I4ef69, b/173726702)
  • 더 이상 Datastore 위임 또는 context.createDataStore를 사용하지 않는 경우 파일 이름을 가져오는 도우미 함수를 추가합니다. (I60f9a)
  • 이제 Serializer writeTo 및 readFrom이 정지됩니다. Serializer를 구현한 경우 정지 함수가 되도록 함수를 업데이트해야 합니다. (I1e58e)
  • RxDataStore 사용자를 위한 속성 위임을 추가했습니다. (Ied768, b/173726702)

버그 수정

버전 1.0.0-alpha07

2021년 2월 24일

androidx.datastore:datastore-*:1.0.0-alpha07이 출시되었습니다. 버전 1.0.0-alpha07에 포함된 커밋을 확인하세요.

API 변경사항

  • Context.createDataStore 확장 함수를 삭제하고 globalDataStore 속성 위임으로 대체했습니다. kotlin 파일의 최상위 수준에서 globalDataStore를 한 번 호출합니다. 예:

    val Context.myDataStore by dataStore(...)
    

    kotlin 파일의 최상위 수준에 배치하면 이 인스턴스가 하나만 생깁니다. (I57215, b/173726702)

  • RxDataStore 함수는 이제 DataStore의 확장 함수 대신 RxDataStore 클래스에 있습니다. (Idccdb, b/177691248)

  • EncryptedSharedPreferences를 DataStore로 이전(또는 SharedPreferences를 직접 부팅)하려는 경우 이제 SharedPreferences를 삽입할 수 있는 새로운 SharedPreferencesMigration 생성자를 사용하면 됩니다. (I8e04e, b/177278510)

버그 수정

  • 동일한 파일에 활성 DataStore가 여러 개 있는 경우 이제 DataStore에서 예외가 발생합니다. DataStore를 싱글톤으로 관리하지 않았거나 한 파일의 DataStore 인스턴스 두 개가 동시에 활성화되지 않도록 조치하지 않은 경우 이제 DataStore를 읽거나 DataStore에 쓸 때 예외가 발생할 수도 있습니다. DataStore를 싱글톤으로 관리하면 해결할 수 있습니다. (Ib43f4, b/177691248)
  • 호출자 범위 취소 시의 취소 동작을 수정합니다. (I2c7b3)

버전 1.0.0-alpha06

2021년 1월 13일

androidx.datastore:datastore-*:1.0.0-alpha06이 출시되었습니다. 버전 1.0.0-alpha06에 포함된 커밋을 확인하세요.

새로운 기능

  • DataStore용 RxJava 래퍼를 추가했습니다. datastore-rxjava2/3 아티팩트에는 핵심 DataStore API용 래퍼가 포함됩니다(RxDataStore, RxDataStoreBuilder, RxDataMigration). datastore-preferences-rxjava2/3 아티팩트에는 Preferences DataStore를 생성하는 빌더가 포함됩니다.

API 변경사항

  • CorruptionHandler 인터페이스를 숨깁니다. DataStore 팩토리가 ReplaceFileCorruptionHandler만 허용하므로 인터페이스를 공개할 이유가 없기 때문입니다. (I0b3b3, b/176032264)
  • preferencesKey<T>(name: String): Key<T> 메서드를 삭제하고 각 지원되는 유형과 관련된 메서드로 대체했습니다. 예를 들어, preferencesKey<Int>("int")는 이제 intPreferencesKey("int")입니다. (Ibcfac, b/170311106)

버그 수정

  • 데이터 저장소 파일이 'datastore/' 하위 디렉터리에 생성되었다는 사실이 기록된 DataStoreFactory 관련 문서를 수정했습니다. (Ica222)

버전 1.0.0-alpha05

2020년 12월 2일

androidx.datastore:datastore-*:1.0.0-alpha05가 출시되었습니다. 버전 1.0.0-alpha05에 포함된 커밋을 확인하세요.

버그 수정

  • Datastore의 동시 쓰기에 관해 더 적절한 문서 및 예외를 추가했습니다. (Ia98a2, b/173522155, b/173726702)
  • 이제 Serializer.writeTo()에 전달된 OutputStream을 종료할 수 있습니다(필수는 아님). (I5c9bf, b/173037611)

버전 1.0.0-alpha04

2020년 11월 17일

androidx.datastore:datastore-*:1.0.0-alpha04가 출시되었습니다. 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.

버그 수정

  • 환경설정 Datastore 1.0.0-alpha03에서 다음과 같은 비정상 종료를 일으키는 패키징 문제가 수정되었습니다. java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

버전 1.0.0-alpha03

2020년 11월 11일

androidx.datastore:datastore-*:1.0.0-alpha03가 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.

새로운 기능

  • 이제 환경설정에서 이중 값을 지원합니다(부동 소수점 수보다 더 높은 정밀도가 필요한 경우 유용함). (I5be8f, b/169471808)

API 변경사항

  • 더 빠른 컴파일을 위해 Datastore용 순수 kotlin 종속 항목을 만들었습니다. androidx.datastore:datastore-core에는 Core Kotlin 전용 API가 있고, androidx.datastore:datastore에는 Android에 종속되는 API(SharedPreferencesMigrationContext.createDataStore 생성자 포함)가 있습니다. (I42d75, b/168512698)
  • 더 빠른 kotlin 컴파일을 위해 환경설정 데이터 저장소의 타겟을 분리합니다. (Ia3c19)
  • 이제 Serializer에서는 디스크에 데이터가 없는 경우 사용될 기본값의 새 속성이 필요합니다. 이에 따라, 맞춤 Serializer를 더 쉽게 구현할 수 있어 사용자는 빈 입력 스트림을 특별한 사례로 처리할 필요가 없습니다(빈 입력 스트림이 json으로 파싱되지 않음).

    • 이제 writeTo()에 제공된 출력 스트림이 닫히지 않았는지 확인하는 검사도 있습니다. 이 스트림이 닫혀 있는 경우 예외가 발생합니다. (I16e29)
  • SharedPreferencesView 내부용 생성자를 만듭니다. 원래는 테스트를 위해 공개되었습니다. 대신 테스트는 SharedPreferencesMigration을 생성해야 하며 이를 테스트해야 합니다. (I93891)

버그 수정

  • 이제 DataStoreFactoryPreferenceDataStoreFactoryproduceFile 매개변수가 목록의 마지막 매개변수이므로, kotlin 후행 람다 구문을 사용할 수 있습니다. (Ibe7f1, b/169425442)
  • kotlin에 관한 새로운 명시적인 API 요구사항을 따릅니다. (I5ae1e)

알려진 문제

  • 환경설정 Datastore가 java.lang.NoClassDefFoundError와 충돌합니다. (b/173036843)

버전 1.0.0-alpha02

2020년 10월 14일

androidx.datastore:datastore-core:1.0.0-alpha02androidx.datastore:datastore-preferences:1.0.0-alpha02가 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.

버그 수정

  • Datastore-core의 변형에 대비한 보호 장치를 추가했습니다. 변형은 non-proto/non-preferences 유형을 통해 Datastore를 사용하는 사용자의 Datastore 사용을 중단시킵니다. (I6aa84)
  • 현재 상태를 쉽게 디버깅할 수 있도록 Preferences.kt에 toString 메서드를 추가했습니다. (I96006)
  • DataStore.Preferences의 오용을 방지하기 위한 예외가 추가되었습니다. (I1134d)
  • 시작 시 앱의 비정상 종료를 유발하는 버그를 수정했습니다. (I69237, b/168580258)

버전 1.0.0-alpha01

2020년 9월 2일

androidx.datastore:datastore-core:1.0.0-alpha01androidx.datastore:datastore-preferences:1.0.0-alpha01가 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.

새로운 기능

Jetpack DataStore는 SharedPreferences를 대체하는 개선된 신규 데이터 저장소 솔루션입니다. Kotlin 코루틴과 Flow를 기반으로 한 DataStore는 다음과 같은 두 가지 구현을 제공합니다.

  • Proto DataStore: 유형이 지정된 객체(프로토콜 버퍼로 지원됨)를 저장할 수 있습니다.
  • Preferences DataStore: 키-값 쌍을 저장합니다.

비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장하여 SharedPreferences의 단점을 대부분 극복합니다.