אם יש אוסף קטן יחסית של ערכי מפתח שרוצים לשמור,
אפשר להשתמש בממשקי ה-API של SharedPreferences
. אובייקט SharedPreferences
שמפנה לקובץ שמכיל צמדי מפתח-ערך, ומספק שיטות פשוטות לקריאה
וכותבים אותן. כל קובץ SharedPreferences
מנוהל על ידי ה-framework וגם
יכולים להיות פרטיים או משותפים.
בדף הזה מוסבר איך להשתמש בממשקי ה-API של SharedPreferences
כדי לאחסן
לאחזר ערכים פשוטים.
קבלת כינוי להעדפות משותפות
ניתן ליצור קובץ העדפות משותפות חדש או לגשת לקובץ קיים באמצעות קריאה אחת מהשיטות הבאות:
getSharedPreferences()
: כדאי להשתמש באפשרות הזו אם צריכים מספר פריטים משותפים קובצי העדפות המזוהים לפי שם, שאותו מציינים עם הפרמטר. אפשר להתקשר למספר הזה מכלContext
באפליקציה.getPreferences()
: אפשר להשתמש באפשרות הזו מ-Activity
אם צריך כדי להשתמש בקובץ העדפות משותף אחד בלבד עבור הפעילות. כי זה מאחזר קובץ ברירת מחדל של העדפה משותפת ששייך לפעילות, אין צורך לספק שם.
לדוגמה, הקוד הבא ניגש לקובץ ההעדפות המשותפות
מזוהה על ידי מחרוזת המשאב R.string.preference_file_key
ופותח אותו
באמצעות מצב פרטי, כך שהקובץ יהיה נגיש רק לאפליקציה שלכם:
Kotlin
val sharedPref = activity?.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE)
Java
Context context = getActivity(); SharedPreferences sharedPref = context.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE);
כשמעניקים שמות לקובצי ההעדפות המשותפות, צריך להשתמש בשם ייחודי
ניתן לזיהוי באפליקציה. דרך טובה לעשות זאת היא להוסיף לשם הקובץ את הקידומת הבאה
את מזהה האפליקציה שלך. מוצרים לדוגמה:
"com.example.myapp.PREFERENCE_FILE_KEY"
לחלופין, אם אתם צריכים רק קובץ העדפות משותף אחד בשביל הפעילות שלכם,
אפשר להשתמש בשיטה getPreferences()
:
Kotlin
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
Java
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
אם אתם משתמשים ב-API של SharedPreferences
כדי לשמור הגדרות של אפליקציות,
במקום זאת, צריך להשתמש ב-getDefaultSharedPreferences()
כדי לקבל את ברירת המחדל
קובץ העדפות משותף לכל האפליקציה. מידע נוסף זמין במאמר
מדריך ההגדרות למפתחים.
כתיבה להעדפות משותפות
כדי לכתוב בקובץ העדפות משותף, צריך ליצור SharedPreferences.Editor
על ידי התקשרות אל edit()
ב-SharedPreferences
שלך.
מעבירים את המפתחות והערכים שרוצים לכתוב באמצעות שיטות כמו:
הפקודה putInt()
והפקודה putString()
. לאחר מכן קוראים אל apply()
או
commit()
כדי לשמור את השינויים. לדוגמה:
Kotlin
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return with (sharedPref.edit()) { putInt(getString(R.string.saved_high_score_key), newHighScore) apply() }
Java
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.saved_high_score_key), newHighScore); editor.apply();
השדה apply()
משנה את האובייקט SharedPreferences
שבזיכרון באופן מיידי, אבל
כותבת את העדכונים לדיסק באופן אסינכרוני. לחלופין, אפשר להשתמש ב-commit()
כדי לכתוב את הנתונים לדיסק באופן סינכרוני. אבל מכיוון ש-commit()
הוא סינכרוני,
לא כדאי לחייג אליו מהשרשור הראשי כי זה עלול לגרום להשהיה של ממשק המשתמש
ברינדור.
הקראה מהעדפות משותפות
כדי לאחזר ערכים מקובץ העדפות משותף, צריך להשתמש בשיטות קריאה כמו
getInt()
ו-getString()
, שמספקים את המפתח לערך
שרוצים, ואפשר גם להגדיר ערך ברירת מחדל שיוחזר אם המפתח לא קיים. עבור
דוגמה:
Kotlin
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key) val highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue)
Java
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key); int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);