מאגר נתונים

אחסון נתונים באופן אסינכרוני, בעקביות ובאופן טרנזקציות, כדי להתגבר על כמה מהחסרונות של SharedPreferences
העדכון האחרון גרסה יציבה מועמד לפרסום גרסת בטא גרסת אלפא
1 במאי 2024 1.1.1 - - -

הצהרה על יחסי תלות

כדי להוסיף תלות ב-DataStore, עליכם להוסיף את מאגר Google Maven פרויקט. למאגר Maven של Google אפשר לקבל מידע נוסף.

יש שתי הטמעות של DataStore: העדפות ו-Proto. בוחרים באחת משתי האפשרויות. אפשר גם להוסיף יחסי תלות ללא Android יישום בפועל.

צריך להוסיף את יחסי התלות להטמעה שדרושה לך בקובץ build.gradle של האפליקציה או המודול:

Preferences DataStore

Groovy

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

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

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.1"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-preferences-core:1.1.1"
    }
    

Kotlin

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

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.1")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-preferences-rxjava3:1.1.1")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-preferences-core:1.1.1")
    }
    

Proto DataStore

Groovy

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

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

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-rxjava3:1.1.1"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-core:1.1.1"
    }
    

Kotlin

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

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.1.1")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.1.1")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-core:1.1.1")
    }
    

משוב

המשוב שלך עוזר לנו לשפר את Jetpack. נשמח לשמוע אם גילית בעיות חדשות או אם יש לך רעיונות לשיפור הספרייה הזו. מומלץ לעיין בעיות קיימות בספרייה הזו לפני שיוצרים ספר חדש. אפשר להוסיף את ההצבעה שלך לבעיה קיימת על ידי לחיצה על לחצן הכוכב.

דיווח על בעיה חדשה

מקורות מידע בנושא מעקב אחר בעיות אפשר לקבל מידע נוסף.

גרסה 1.1

גרסה 1.1.1

1 במאי 2024

androidx.datastore:datastore-*:1.1.1 משוחרר. גרסה 1.1.1 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • התראת שווא ב-Linux שהוחלה על "מבוי סתום של משאבים" בתרחיש פינתי, מספר מכונות של 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 יש עכשיו תמיכה בתהליכים מרובים שניגשים לאותו קובץ, עם תמיכה בניראות (observability) בין תהליכים.
  • ממשק האחסון החדש מאפשר להתאים אישית את האופן שבו לאחסן את המודלים של הנתונים או ליצור סריאליזציה שלהם.
  • עכשיו אפשר להשתמש ב-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)
    • לתשומת ליבך, השינוי הזה עשוי להפעיל את UncompletedCoroutinesError בבדיקות שלך אם משתמשים בספריית הבדיקות של Coroutines. כדי להימנע מהבעיה הזו, חשוב להקפיד לעבור את TestScope.backgroundScope בזמן אתחול DataStore בבדיקות.
  • תוקנה הבעיה של קריאות updateData בתצוגת עץ באותו מכונה שגרמה לנעילה. (b/241760537)
  • DataStore לא גורם יותר לזרוק IOExceptions אם המחיקה של SharedPreferences נכשלה במהלך ההעברה. (b/195553816)
  • תוקנה הבעיה שבה שינוי שם של קובץ נכשל במהלך updateData בסביבות שאינן Android JVM. (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

  • Datastore FileStorage זמין עכשיו באופן ציבורי, כך שהלקוחות יכולים לספק פרמטרים מותאמים אישית. (Icb985)
  • constructor של OkioStorage השתנה כדי לקבל InterProcessCoordinator כדי שניתן יהיה להשתמש בו ב-Android עם MultiProcessCoordinator. (Iecea3)

תיקוני באגים

  • פתרון בעיות ב-MultiProcessCoordinator כאשר לא ניתן לעקוב אחר קבצים מרובים באותה ספרייה.
  • תיקון הבעיה שלא ניתן לזהות קבצים כפולים אם נתיבי הקבצים לא מנורמלים.
  • תיקון ערכים שגויים שהוחזרו מ-RxDataStore#isDisposed.
  • צריך לתקן הגדרה חסרה של Protected עבור פריט מידע שנוצר בתהליך הפיתוח (Artifact) מסוג datstore-preferences-core.

גרסה 1.1.0-alpha04

5 באפריל 2023

androidx.datastore:datastore-*:1.1.0-alpha04 משוחרר. גרסה 1.1.0-alpha04 מכילה את התחייבויות אלה.

תיקוני באגים

  • כדאי לשפר את ההטמעה הפנימית כדי למנוע מרוץ תהליכים שבו זרימת הנתונים של DataStore עשויה לפלוט ערך ישן אחרי עדכון.

גרסה 1.1.0-alpha03

24 במרץ 2023

androidx.datastore:datastore-*:1.1.0-alpha03 משוחרר.

תיקוני באגים

  • הוסרו מגבלות התלות מפריטי מידע שנוצרו בתהליך הפיתוח (Artifact) של 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 בממשק ליבה של מאגר נתונים (I555bb)
  • שינוי ממשקי ה-API בליבת מאגר הנתונים MultiProcessDataStoreFactory כדי להשתמש באחסון. (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 בליבת מאגר הנתונים MultiProcessDataStoreFactory כדי להשתמש באחסון. (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 משתמשים בקורוטינים וב-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 נוסף בטעות לצנצנת סופית (I65d96, b/188985637)

גרסה 1.0.0-beta02

16 ביוני 2021

androidx.datastore:datastore-*:1.0.0-beta02 משוחרר. גרסה 1.0.0-beta02 מכילה את התחייבויות אלה.

תיקוני באגים

גרסה 1.0.0-beta01

21 באפריל 2021

androidx.datastore:datastore-*:1.0.0-beta01 משוחרר. גרסה 1.0.0-beta01 מכילה את התחייבויות אלה.

שינויים ב-API

  • הסרת עומסי יתר של JVM ל-methods של 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)
  • הוספת פונקציות מסייעות לקבלת שם הקובץ אם אתם כבר לא משתמשים בהרשאת גישה למאגר הנתונים או בהקשר.createDataStore (I60f9a)
  • האפשרויות 'כתיבה אל' ו-'ReadFrom' מושהות עכשיו. אם הטמעתם מכשיר סריאליזציה, תצטרכו לעדכן את הפונקציות כדי להגדיר פונקציות השעיה. 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • פונקציית התוסף Context.createDataStore הוסרה והוחלפה בהרשאה לנכס מסוג globalDataStore. קוראים ל-globalDataStore פעם אחת ברמה העליונה בקובץ ה-kotlin לדוגמה:

    val Context.myDataStore by dataStore(...)
    

    שים את הקובץ ברמה העליונה של קובץ Kotlin כדי שיהיה רק מופע אחד שלו. (I57215, b/173726702)

  • הפונקציות של RxDataStore נמצאות עכשיו במחלקה RxDataStore במקום בפונקציות של תוספים ב-DataStore. (Idccdb, b/177691248)

  • אם רוצים להעביר את EncryptedSharedPreferences (או לבצע הפעלה ישירה של SharedPreferences) ל-DataStore, אפשר לעשות זאת כעת באמצעות ה-constructor החדש של SharedPreferencesmigration, שמאפשר להחדיר את SharedPreferences. (I8e04e, b/177278510)

תיקוני באגים

  • DataStore יחזיר עכשיו חריגה אם יש מספר מאגרי נתונים פעילים עבור אותו קובץ. אם לא ביצעתם ניהול של מאגר הנתונים כ-Singleton או שלא וידאתם שאין שני מופעים של DataStore פעילים בו-זמנית בקובץ מסוים, ייתכן שיופיעו חריגים בקריאה או כתיבה ל-DataStore. אפשר לתקן את השגיאות על ידי ניהול מאגר הנתונים כ-Singleton. (Ib43f4, b/177691248)
  • צריך לתקן את התנהגות הביטול כשהיקף המתקשר מבוטל. (I2c7b3)

גרסה 1.0.0-alpha06

13 בינואר 2021

androidx.datastore:datastore-*:1.0.0-alpha06 משוחרר. גרסה 1.0.0-alpha06 מכילה את התחייבויות אלה.

תכונות חדשות

  • נוספו wrappers של RxJava ל-DataStore. פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של datastore-rxjava2/3 מכילים את רכיבי ה-wrapper של ממשקי ה-API העיקריים של DataStore (RxDataStore, RxDataStoreBuilder ו-RxDataMigration). פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של datastore-preferences-rxjava2/3 מכילים builder ליצירת מאגר נתונים של העדפות.

שינויים ב-API

  • הסתרת הממשק CorruptionHandler. לא הייתה סיבה לכך שהוא יהיה ציבורי, כי המפעל DataStore מקבל רק ExchangeFileCorruptionHandler. (I0b3b3, b/176032264)
  • ה-method preferencesKey<T>(name: String): Key<T> הוסרה והוחלפה ב-methods ספציפיות לכל סוג נתמך. לדוגמה, preferencesKey<Int>("int") נקראת עכשיו intPreferencesKey("int") (Ibcfac, b/170311106)

תיקוני באגים

  • מתקן תיעוד ב-DataStoreStore, שהשמט את העובדה שקובץ מאגר הנתונים נוצר בספריית המשנה '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

גרסה 1.0.0-alpha03

11 בנובמבר 2020

androidx.datastore:datastore-*:1.0.0-alpha03 משוחרר. גרסה 1.0.0-alpha03 מכילה את התחייבויות אלה.

תכונות חדשות

  • ההעדפות תומכות עכשיו בערכים כפולים (שימושי במקרה של דיוק רב יותר מאשר צפים) (I5be8f, b/169471808)

שינויים ב-API

  • נוצרה תלות טהור ב-Kotlin למאגר נתונים כדי לאפשר הידור מהיר יותר. androidx.datastore:datastore-core מכיל את ממשקי ה-API העיקריים של Kotlin בלבד, ו-androidx.datastore:datastore מכיל את ממשקי ה-API שתלויים ב-Android (כולל את SharedPreferencesMigration ואת Context.createDataStore constructor.)(I42d75, b/168512698)
  • פיצול יעדים למאגר הנתונים של העדפות כדי להדר מהר יותר של kotlin (Ia3c19)
  • למכשירים עם יציאה טורית נדרשת עכשיו מאפיין חדש עבור ערך ברירת המחדל שישמש אם אין נתונים בדיסק. כך קל יותר להטמיע מכשירים סידוריים מותאמים אישית, כך שלא יהיה צורך להשתמש בזרמי קלט ריקים עם אותיות רישיות (למשל, זרמי קלט ריקים לא מנתחים באמצעות JSON).

    • בנוסף, יש עכשיו בדיקה שמוודאת שזרם הפלט שסופק ל-WriteTo() אינו סגור, ואם הוא סגור הוא גורם חריגות (I16e29)
  • הגדרת ה-constructor של SharedPreferencesView לשימוש פנימי. במקור הוא היה ציבורי כדי לאפשר בדיקה. במקום זאת, הבדיקות צריכות ליצור SharedPreferencesMigration (העברה) ולבדוק זאת על סמך הנתונים האלה. (I93891)

תיקוני באגים

  • הפרמטר produceFile ב-DataStoreFactory וב-PreferenceDataStoreFactory הוא עכשיו הפרמטר האחרון ברשימה, ולכן הוא מאפשר להשתמש בתחביר lambda אחרי kotlin. (Ibe7f1, b/169425442)
  • עמידה בדרישות החדשות המפורשות לגבי API עבור Kotlin (I5ae1e)

בעיות מוכרות

  • העדפות 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 מובנה ב-Kotlin וב-Flow, והוא מספק שתי הטמעות שונות:

  • Proto DataStore, מאפשר לאחסן אובייקטים מוקלדים (מגובים על ידי מאגרי פרוטוקולים)
  • העדפות DataStore, לאחסון צמדי מפתח-ערך

הנתונים מאוחסנים באופן אסינכרוני, בעקביות ובאופן טרנזקציות, וכך מתגברים על רוב החסרונות של SharedPreferences.