DataStore
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסה אלפא |
---|---|---|---|---|
15 בינואר 2025 | 1.1.2 | - | - | - |
הצהרת יחסי תלות
כדי להוסיף יחסי תלות ל-DataStore, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאגר Maven של Google.
יש שתי הטמעות של DataStore: Preferences ו-Proto. בוחרים באחת מהאפשרויות. אפשר גם להוסיף יחסי תלות ללא Android לכל אחת מההטמעות.
מוסיפים את יחסי התלות של ההטמעה הנדרשת בקובץ build.gradle
של האפליקציה או המודול:
Preferences DataStore
Groovy
// Preferences DataStore (SharedPreferences like APIs) dependencies { implementation "androidx.datastore:datastore-preferences:1.1.2" // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.2" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.2" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-preferences-core:1.1.2" }
Kotlin
// Preferences DataStore (SharedPreferences like APIs) dependencies { implementation("androidx.datastore:datastore-preferences:1.1.2") // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.2") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.1.2") } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation("androidx.datastore:datastore-preferences-core:1.1.2") }
Proto DataStore
Groovy
// Typed DataStore (Typed API surface, such as Proto) dependencies { implementation "androidx.datastore:datastore:1.1.2" // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.1.2" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.1.2" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-core:1.1.2" }
Kotlin
// Typed DataStore (Typed API surface, such as Proto) dependencies { implementation("androidx.datastore:datastore:1.1.2") // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.1.2") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.1.2") } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation("androidx.datastore:datastore-core:1.1.2") }
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במסמכי התיעוד של Issue Tracker.
גרסה 1.1
גרסה 1.1.2
15 בינואר 2025
androidx.datastore:datastore-*:1.1.2
משוחרר. גרסה 1.1.2 כוללת את ההוספות האלה.
תיקוני באגים
- שיפור של פי 8 בזמן האחזור של קריאה מהירה (
DataStore.data.first()
). (22b8a40) - אפשר ליצור את
ReplaceFileCorruptionHandler
מקוד משותף של KMP. (7632e839)
גרסה 1.1.1
1 במאי 2024
androidx.datastore:datastore-*:1.1.1
משוחרר. גרסה 1.1.1 מכילה את ההוספות האלה.
תיקוני באגים
- ביטול התראות שווא ב-Linux על השגיאה 'Resource deadlock would occur' במקרה קיצוני שבו מספר מכונות
DataStore
מנסו לכתוב מתהליכים שונים על ידי ביטול נעילת הקובץ.
גרסה 1.1.0
17 באפריל 2024
androidx.datastore:datastore-*:1.1.0
משוחרר. גרסה 1.1.0 כוללת את ההוספות האלה.
שינויים משמעותיים מאז הגרסה 1.0.0
מידע נוסף זמין בהערות הגרסה של גרסאות האלפא והבטא של 1.1.0. חלק מהעדכונים העיקריים בגרסה 1.1.0 הם:
- DataStore תומך עכשיו בכמה תהליכים שיכולים לגשת לאותו קובץ, עם תמיכה ביכולת התצפית על פני תהליכים.
- ממשק האחסון החדש מאפשר לכם להתאים אישית את האופן שבו אתם מאחסנים או מסדרים את מודלי הנתונים שלכם.
- מעכשיו אפשר להשתמש ב-DataStore בפרויקטים של Kotlin Multiplatform.
גרסה 1.1.0-rc01
3 באפריל 2024
androidx.datastore:datastore-*:1.1.0-rc01
משוחרר. גרסת 1.1.0-rc01 כוללת את ההוספות האלה.
תיקוני באגים
- תוקנה פגיעה בביצועים במקרים שבהם קריאות ל-
updateData
לא בוצעה אופטימיזציה של כתיבת נתונים בדיסק אם הנתונים החדשים זהים לנתונים הישנים (d64cfb5) - תוקן מצב מרוץ שבו
MultiProcess
DataStore
עלול לפספס ביטולים במהלך האתחול. ((b/326141553),(094c2dd))
גרסה 1.1.0-beta02
6 במרץ 2024
androidx.datastore:datastore-*:1.1.0-beta02
משוחרר. גרסת 1.1.0-beta02 כוללת את ההוספות האלה.
תיקוני באגים
- התכונה 'שיפור הביצועים' ב-
DataStore
אוספת התראות על עדכונים רק כשהיא מזהה אותם. (b/267792241)- הערה: אם אתם משתמשים בספריית הבדיקה של Coroutines, יכול להיות שהשינוי הזה יגרום להפעלה של
UncompletedCoroutinesError
בבדיקות. כדי למנוע את הבעיה הזו, חשוב להעביר אתTestScope.backgroundScope
בזמן שמפעילים אתDataStore
בבדיקות.
- הערה: אם אתם משתמשים בספריית הבדיקה של Coroutines, יכול להיות שהשינוי הזה יגרום להפעלה של
- תוקנה בעיה שבה קריאות
updateData
בתצוגת עץ באותו מופע היו מובילות לנעילה מרובת משתמשים. (b/241760537) DataStore
לא יגרום יותר להפעלתIOExceptions
אם לא ניתן למחוק אתSharedPreferences
במהלך ההעברה. (b/195553816)- תוקנה בעיה שבה שינוי שם הקובץ נכשל במהלך
updateData
בסביבות JVM שאינן Android. (b/203087070) - תוקנה בעיה שבה
CorruptionException
לא מטופל אחרי האיניציאליזציה שלDataStore
. (b/289582516)
גרסה 1.1.0-beta01
10 בינואר 2024
androidx.datastore:datastore-*:1.1.0-beta01
פורסם ללא שינויים מאז 1.1.0-alpha07
. גרסה 1.1.0-beta01 כוללת את השמירות האלה.
גרסה 1.1.0-alpha07
29 בנובמבר 2023
androidx.datastore:datastore-*:1.1.0-alpha07
משוחרר. גרסה 1.1.0-alpha07 מכילה את ההוספות האלה.
שינויים ב-API
- השיטות של
MultiProcessDataStoreFactory
כבר לא נחשבות לניסיוניות.ההערה@ExperimentalMultiProcessDataStore
הוסרה לחלוטין. (Ieee54, I8e607)
תיקוני באגים
- השקת ההסרה של הערות
@ExperimentalMultiProcessDataStore
בגרסה 1.1.0-alpha07. (I8e607)
גרסה 1.1.0-alpha06
1 בנובמבר 2023
androidx.datastore:datastore-*:1.1.0-alpha06
משוחרר. גרסה 1.1.0-alpha06 מכילה את ההוספות האלה.
שינויים ב-API
- שיטת המפעל
createSingleProcessCoordinator
מקבלת עכשיו נתיב קובץ (String
, java.io.File
ו-okio.Path
) כדי להיות עקבית עםcreateMultiProcessCoordinator
. (I211c8, b/305755935)
גרסה 1.1.0-alpha05
6 בספטמבר 2023
androidx.datastore:datastore-*:1.1.0-alpha05
משוחרר. גרסה 1.1.0-alpha05 מכילה את ההוספות האלה.
שינויים ב-API
- מאגר הנתונים
FileStorage
זמין עכשיו לכולם, כך שלקוחות יכולים לספק פרמטרים מותאמים אישית. (Icb985) - שינינו את ה-constructor של
OkioStorage
כך שיקבלInterProcessCoordinator
, כדי שניתן יהיה להשתמש בו ב-Android עםMultiProcessCoordinator
. (Iecea3)
תיקוני באגים
- תיקון
MultiProcessCoordinator
לא ניתן לעקוב אחרי כמה קבצים באותה ספרייה. - תיקון של בעיה שבה לא ניתן לזהות קבצים כפולים אם נתיבי הקבצים לא רגילים.
- מתקנים את הערכים השגויים שמוחזרים מ-
RxDataStore#isDisposed
. - תיקון הגדרת Proguard חסרה לארטיפקט
datstore-preferences-core
.
גרסה 1.1.0-alpha04
5 באפריל 2023
androidx.datastore:datastore-*:1.1.0-alpha04
משוחרר. גרסה 1.1.0-alpha04 מכילה את ההוספות האלה.
תיקוני באגים
- שיפור ההטמעה הפנימית כדי למנוע מצב של תחרות (race condition), שבו זרימת הנתונים של
DataStore
עשויה להפיק ערך ישן יותר אחרי עדכון.
גרסה 1.1.0-alpha03
24 במרץ 2023
androidx.datastore:datastore-*:1.1.0-alpha03
משוחרר.
תיקוני באגים
- הסרנו אילוצים של יחסי תלות מפריטי Maven כדי לעקוף בעיה ב-build ב-Kotlin Native Targets (b/274786186, KT-57531).
גרסה 1.1.0-alpha02
22 במרץ 2023
androidx.datastore:datastore-*:1.1.0-alpha02
משוחרר. גרסה 1.1.0-alpha02 מכילה את ההוספות האלה.
הערה
שימו לב שהגרסה הזו כוללת שינוי פנימי חשוב שממזג את הטמעות DataStore לתהליך יחיד ולתהליכים מרובים. חשוב לעקוב אחרי שינויים בלתי רצויים בהתנהגות (למשל, תזמון ההתראות על עדכונים). אפשר להשתמש ברכיב למעקב אחר בעיות כדי לדווח על שינויים כאלה.
תכונות חדשות
- עכשיו אפשר להשתמש ב-
DataStore
בפרויקטים של KMM. חשוב לזכור שהיעדים של DataStore שאינם ל-Android עדיין נמצאים בגרסת ניסיון, אבל החלטנו למזג את הגרסאות כדי שיהיה קל יותר למפתחים לנסות אותן. - התכונות של תהליכים מרובים הועברו מ-
androidx.datastore.multiprocess
אלandroidx.datastore.core
. - מוסיפים שיטה חדשה של מפעל ב-
androidx.datastore.core.MultiProcessDataStoreFactory
כדי ליצור מכונות של DataStore עם אובייקטים שלStorage
לפעולות הקשורות לקובצים. - הוספת ממשק חדש
InterProcessCoordinator
שעוזר למספר מכונות DataStore לתקשר בין תהליכים. שימו לב שהטמעה שלInterProcessCoordinator
במספר תהליכים זמינה רק ב-Android.
שינויים ב-API
- הוספת
InterProcessCoordinator
ל-StorageConnection
בממשק datastore-core (I555bb) - משנים את ממשקי ה-API ב-datastore-core
MultiProcessDataStoreFactory
כך שישתמשו ב-Storage. (Iac02f) - העברת ממשקי API ציבוריים מ-datastore-multiprocess אל datastore-core (I76d7c)
- חשיפה של
PreferencesSerializer
מ-datastore-preferences-core (I4b788) - הוספת הערה
@JvmDefaultWithCompatibility
(I8f206)
גרסה 1.1.0-alpha01
9 בנובמבר 2022
androidx.datastore:datastore-*:1.1.0-alpha01
משוחרר. גרסה 1.1.0-alpha01 כוללת את ההוספות האלה.
תכונות חדשות
- תמיכה בתרחישי שימוש עם תהליכים מרובים, שבהם עקביות הנתונים מובטחת בין מכונות
DataStore
בתהליכים שונים. מוסיפים אתMultiProcessDataStoreFactory#create
כדי ליצור מכונותDataStore
כאלה. - ממשק אחסון חדש שמאפשר להחליף את מנגנון האחסון הבסיסי של
Datastore
. יש הטמעות של java.io ו-okio. למפעלים שלDataStore
יש שיטות חדשות שמקבלות את אובייקט האחסון הזה.
שינויים ב-API
- משנים את ממשקי ה-API ב-datastore-core
MultiProcessDataStoreFactory
כך שישתמשו ב-Storage. (Iac02f) - העברת ממשקי API ציבוריים מ-datastore-multiprocess אל datastore-core (I76d7c)
- חשיפה של
PreferencesSerializer
מ-datastore-preferences-core (I4b788)
גרסה 1.0.0
גרסה 1.0.0
4 באוגוסט 2021
androidx.datastore:datastore-*:1.0.0
משוחרר. גרסה 1.0.0 כוללת את ההצהרות האלה.
תכונות עיקריות בגרסה 1.0.0
Jetpack DataStore הוא פתרון לאחסון נתונים שמאפשר לאחסן צמדי מפתח-ערך או אובייקטים מסוגים שונים באמצעות מאגרי פרוטוקול. ב-DataStore נעשה שימוש ב-coroutines וב-Flow של Kotlin כדי לאחסן נתונים באופן אסינכרוני, עקבי ועסקאותי.
גרסה 1.0.0-rc02
21 ביולי 2021
androidx.datastore:datastore-*:1.0.0-rc02
משוחרר. גרסה 1.0.0-rc02 כוללת את ההצהרות האלה.
תיקוני באגים
- צריך להבהיר ש-
SharedPreferencesMigration
לא פועל אם אין מפתחות. (Icfa32, b/192824325) - תיקון באג שבו
SharedPreferencesMigration
שנוצר באמצעותMIGRATE_ALL_KEYS
היה גורם להפעלת חריגה אם המפתח המבוקש עדיין לא קיים. (Ie318a, b/192824325)
גרסה 1.0.0-rc01
30 ביוני 2021
androidx.datastore:datastore-*:1.0.0-rc01
משוחרר. גרסה 1.0.0-rc01 כוללת את ההוספות האלה.
תיקוני באגים
- תיקון באג שבו קובץ .java נוסף בטעות לקובץ ה-jar הסופי (I65d96, b/188985637)
גרסה 1.0.0-beta02
16 ביוני 2021
androidx.datastore:datastore-*:1.0.0-beta02
משוחרר. גרסה 1.0.0-beta02 מכילה את ההצהרות האלה.
תיקוני באגים
- תיקון
ClassVerificationFailure
(b/187450483)
גרסה 1.0.0-beta01
21 באפריל 2021
androidx.datastore:datastore-*:1.0.0-beta01
משוחרר. גרסה 1.0.0-beta01 כוללת את ההצהרות האלה.
שינויים ב-API
- הסרת עומסי יתר של JVM לשיטות של kotlin בלבד (I2adc7)
תיקוני באגים
- תוקן באג שגרם לכך שיכול להיות שסמכויות גישה של מאגר נתונים יגרמו לדליפת הקשרים (Ie96fc, b/184415662)
גרסה 1.0.0-alpha08
10 במרץ 2021
androidx.datastore:datastore-*:1.0.0-alpha08
משוחרר. גרסה 1.0.0-alpha08 מכילה את ההצהרות האלה.
שינויים ב-API
- עכשיו אפשר להוסיף העברה שתלויה בהקשר למעביר הגישה של הנכסים
dataStore
ו-preferencesDataStore
. (I4ef69, b/173726702) - הוספת פונקציות עזר כדי לקבל את שם הקובץ אם כבר לא משתמשים ב-datastore delegate או ב-context.createDataStore (I60f9a)
- הפונקציות writeTo ו-readFrom של ה-Serializer מושהות עכשיו. אם הטמעתם סריאליזטור, תצטרכו לעדכן את הפונקציות כך שיהיו פונקציות השהיה. (I1e58e)
- נוספו גורמים מואצלים של נכסים למשתמשים ב-RxDataStore. (Ied768, b/173726702)
תיקוני באגים
- אכיפה של הגבלות על שימוש ציבורי בממשקי API ניסיוניים (I6aa29, b/174531520)
גרסה 1.0.0-alpha07
24 בפברואר 2021
androidx.datastore:datastore-*:1.0.0-alpha07
משוחרר. גרסה 1.0.0-alpha07 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
שינויים ב-API
פונקציית התוסף
Context.createDataStore
הוסרה והוחלפה על ידי נציג הנכס globalDataStore. צריך לקרוא ל-globalDataStore פעם אחת ברמה העליונה בקובץ ה-Kotlin. לדוגמה:val Context.myDataStore by dataStore(...)
מומלץ להוסיף את הקוד הזה ברמה העליונה של קובץ ה-Kotlin, כדי שיהיה רק מופע אחד שלו. (I57215, b/173726702)
הפונקציות של RxDataStore נמצאות עכשיו בכיתה RxDataStore במקום כפונקציות תוסף ב-DataStore. (Idccdb, b/177691248)
אם אתם רוצים להעביר את EncryptedSharedPreferences (או את SharedPreferences של אתחול ישיר) ל-DataStore, עכשיו אתם יכולים לעשות זאת באמצעות המבנה החדש של SharedPreferencesMigration שמאפשר להחדיר את SharedPreferences. (I8e04e, b/177278510)
תיקוני באגים
- מעכשיו, מערכת DataStore תשליך חריגה אם יש כמה מאגרי DataStore פעילים לאותו קובץ. אם לא ניהלתם את DataStore כ-Singleton או לא הקפידתם שלא יהיו שני מופעים של DataStore פעילים בו-זמנית בקובץ, יכול להיות שתראו עכשיו חריגות בזמן הקריאה או הכתיבה ב-DataStore. כדי לפתור את הבעיות האלה, צריך לנהל את DataStore כ-Singleton. (Ib43f4, b/177691248)
- תיקון התנהגות הביטול כשהיקף הקריאה של מבצע הקריאה בוטל. (I2c7b3)
גרסה 1.0.0-alpha06
13 בינואר 2021
androidx.datastore:datastore-*:1.0.0-alpha06
משוחרר. גרסה 1.0.0-alpha06 כוללת את ההצהרות האלה.
תכונות חדשות
- נוספו יריעות גיבוי של RxJava ל-DataStore. הארטיפקטים של
datastore-rxjava2/3
מכילים את העטיפות ל-API של DataStore ליבה (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)
תיקוני באגים
- תיקון במסמכי התיעוד של DataStoreFactory, שבהם לא צוין שקובץ מאגר הנתונים נוצר בתיקיית המשנה 'datastore/'. (Ica222)
גרסה 1.0.0-alpha05
2 בדצמבר 2020
androidx.datastore:datastore-*:1.0.0-alpha05
משוחרר. גרסה 1.0.0-alpha05 מכילה את ההוספות האלה.
תיקוני באגים
- הוספת מסמכי תיעוד ותרחישי חריגה טובים יותר לגבי כתיבת בו-זמנית מאחסני נתונים. (Ia98a2, b/173522155, b/173726702)
- עכשיו אנחנו מאפשרים (אבל לא דורשים) לסגור את OutputStream שמועברת אל
Serializer.writeTo()
. (I5c9bf, b/173037611)
גרסה 1.0.0-alpha04
17 בנובמבר 2020
androidx.datastore:datastore-*:1.0.0-alpha04
משוחרר. גרסה 1.0.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים.
תיקוני באגים
- תוקנה בעיה באריזה שגרמה לקריסה הבאה ב-Preference Datastore
1.0.0-alpha03
:java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences
- הדיווח המקורי על הקריסה פורסם כאן: b/173036843
- (I4712d, b/173036843)
גרסה 1.0.0-alpha03
11 בנובמבר 2020
androidx.datastore:datastore-*:1.0.0-alpha03
משוחרר. גרסה 1.0.0-alpha03 כוללת את ההצהרות האלה.
תכונות חדשות
- ההעדפות תומכות עכשיו בערכים כפולים (שימושי אם אתם צריכים רמת דיוק גבוהה יותר מאשר ערכים צפים) (I5be8f, b/169471808)
שינויים ב-API
- נוצרה תלות טהורה ב-Kotlin ל-datastore כדי לאפשר הידור מהיר יותר.
androidx.datastore:datastore-core
מכיל את ממשקי ה-API המרכזיים של Kotlin בלבד, ו-androidx.datastore:datastore
מכיל את ממשקי ה-API שתלויים ב-Android (כולל ה-constructor שלSharedPreferencesMigration
ו-Context.createDataStore
). (I42d75, b/168512698) - חלוקה של יעדים למאגר נתוני ההעדפות כדי לאפשר הידור מהיר יותר של Kotlin (Ia3c19)
מעכשיו, Serializers דורשים מאפיין חדש לערך ברירת המחדל שישמש אם אין נתונים בדיסק. כך קל יותר להטמיע סריאליזציות בהתאמה אישית, כך שמשתמשים לא צריכים לטפל במקרים מיוחדים של מקורות קלט ריקים (מקורות קלט ריקים לא מנותחים באמצעות JSON).
- בנוסף, יש עכשיו בדיקה כדי לוודא שזרם הפלט שסופק ל-writeTo() לא סגור, ואם הוא סגור, הוא יוצר חריגות (I16e29)
הפיכת המבנה של ה-constructor ל-SharedPreferencesView לפנימי. במקור הוא היה גלוי לכולם כדי לאפשר בדיקה. במקום זאת, צריך ליצור בבדיקה אובייקט SharedPreferencesMigration ולבדוק אותו. (I93891)
תיקוני באגים
- הפרמטר
produceFile
ב-DataStoreFactory
וב-PreferenceDataStoreFactory
הוא עכשיו הפרמטר האחרון ברשימה, כך שאפשר להשתמש בסינטקס של lambda נגרר ב-Kotlin. (Ibe7f1, b/169425442) - בהתאם לדרישות החדשות של ממשקי API מפורשים ל-Kotlin (I5ae1e)
בעיות מוכרות
- Preference Datastore קורס עם השגיאה
java.lang.NoClassDefFoundError
. (b/173036843)
גרסה 1.0.0-alpha02
14 באוקטובר 2020
androidx.datastore:datastore-core:1.0.0-alpha02
ו-androidx.datastore:datastore-preferences:1.0.0-alpha02
משוחררים. גרסה 1.0.0-alpha02 מכילה את ההצהרות האלה.
תיקוני באגים
- נוספה הגנה מפני מוטציה ב-datastore-core. מוטציה משבשת את השימוש במאגר הנתונים של אנשים שמשתמשים במאגר נתונים עם סוגי נתונים שאינם proto או העדפות (I6aa84)
- הוספנו שיטה
toString
לקובץ Preferences.kt כדי שיהיה קל לנפות באגים במצב הנוכחי (I96006) - נוספה החרגה כדי להגן מפני שימוש לרעה ב-
DataStore.Preferences
(I1134d) - תוקן באג שגרם לאפליקציה לקרוס בזמן ההפעלה (I69237, b/168580258)
גרסה 1.0.0-alpha01
2 בספטמבר 2020
androidx.datastore:datastore-core:1.0.0-alpha01
ו-androidx.datastore:datastore-preferences:1.0.0-alpha01
משוחררים. גרסה 1.0.0-alpha01 מכילה את ההצהרות האלה.
תכונות חדשות
Jetpack DataStore הוא פתרון חדש ומשופר לאחסון נתונים, שנועד להחליף את SharedPreferences. DataStore מבוסס על פונקציות קורוטין ו-Flow ב-Kotlin, ומספק שתי הטמעות שונות:
- Proto DataStore, שמאפשר לאחסן אובייקטים מסוגים שונים (המגובים על ידי מאגרי פרוטוקול)
- Preferences DataStore, שמאחסן צמדים של מפתח/ערך
הנתונים נשמרים באופן אסינכררוני, עקבי ועסקאותי, וכך מתגברים על רוב החסרונות של SharedPreferences.