تخزين الإعدادات في الأندرويد | Shared Preferences
ماهو Shared Preferences وكيف أستخدمه؟
بكل بساطة هو وسيلة لتخزين البيانات البسيطة مثل اسم المستخدم او بعض الإعدادات أو بعض القيم لأشياء معينة ,مسار نغمة الرنين,حجم الخط,عدد coins في بعض الألعاب الخ...
ويتم تخزينها على هيئة ملف xml بهيئة (key: value) كما سنرى لاحقاً
نبدأ بإنشاء Shared Preferences
Sharedpreferences prefs = getSharedPreferences ("myPrefs" ,MODE_PRIVATE);
أسمينا ملف Shared Preferences myPrefs حيث أنه سيتم إنشاء ملف باسم myPrefs في الهاتف , بعد ذلك نبدأ بوضع القيم داخل Shared Preferences كما في المثال
يمكنك وضع بيانات من الأنواع boolean,float,int,long,String,StringSet.. على سبيل المثال سنضع قيمة من نوع String ولتكن اسم "TecStore" ونخزنه داخل Shared Preferences, نلاحظ ان الميثود putString تأخذ ٢ بارامتر,الأول وهو ال key من نوع String وهو الذي يتم استدعاؤه عند جلب القيمة كما في المثال والبارامتر الثاني وهي القيمة الذي تريد تخزينها ولا ننسى وضع .apply() لحفظ القيمة
بعد ذلك قمنا بإنشاء String وأسميناه aStringfromShared ونلاحظ أيضاً عند الإستدعاء يوجد ميثود getString وهي تأخذ ٢ بارامتر,الأول هو key ويجب أن يكون نفس key الذي قمنا بإنشاءه سابقاً,اما البارامتر الثاني فهي القيمة الإفتراضية يمكن وضعها null او أي قيمة تريد.. نجرب أن نطبع القيمة التي قمنا بتخزينها
SharedPreferences prefs = getSharedPreferences("myPrefs", MODE_PRIVATE);
prefs.edit().putString("key", "TecStore").apply();
String aStringFromShared = prefs.getString("key", "");
Log.d("TAG",aStringFromShared);
فنجد ان القيمة هي "TecStore"
فعلياً عندما تقوم بإنشاء Shared Preferences فإنه يقوم بإنشاء ملف بصيغة xml في داخل مجلد التطبيق بنفس الإسم الذي وضعته,في حالتي هو myPrefs فإذا ذهبت الى متصفح الملفات (قد تحتاج لصلاحيات روت) الى مجلد :
data/data/"yourpackageName"
ستجد عدة مجلدات منها shared_prefs وداخلها ستجد جميع ملفات Shared Preferences التي قمت بإنشائها
واذا قمنا بفتح ملف myPrefs.xml سنجد بداخله القيمة التي قمنا بتخزينها مع key
تنفيذ أمر معين عند فتح التطبيق لأول مرة
في بعض المشاريع قد تحتاج لفعل شيئ ما فقط عند تشغيل التطبيق لأول مرة (كتحميل بعض البيانات من السيرفر,حفظ بيانات مستخدم,تسجيل الدخول الخ..) كيف يمكننا فعل ذلك؟ بسيطة جداً كل ماعليك هو إنشاء Shared Preferences ,نقوم بأخذ القيمة isFirstTime من Shared Preferences ,وفي حال لم يتم تخزينها سابقاً (أي أنه هذه أول مرة يتم فيها تشغيل التطبيق ) عندها ستكون القيمة الإفتراضية true
SharedPreferences prefs = getSharedPreferences("myPrefs",MODE_PRIVATE);
prefs.getBoolean("isFirstTime",true);
بعد ذلك نتأكد اذا كانت أول مرة نقوم بإظهار رسالة Toast
if (isFirstTime)
Toast.makeText(MainActivity.this, "This is First Run :D").show();
أخيراً نقوم بحفظ القيمة false لأنه عندها سيكون التطبيق قد تم تشغيله سابقاً
prefs.edit().putBoolean("isFirstTime",false);
الآن عند تشغيل التطبيق لأول مرة سنجد رسالة Toast قد ظهرت
وعند تشغيل للمرة الثانية لا يظهر شيئ (وهذا مانريده :D)
يمكنك أيضاً التحقق من أن ملف Shared Preferences يحتوي على key معين كما في المثال
boolean isContains = prefs.contains("aKey");
لمزيد من المعلومات عبر موقع المطورين
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !