ماهو Shared Preferences وكيف أستخدمه؟

بكل بساطة هو وسيلة لتخزين البيانات البسيطة مثل اسم المستخدم او بعض الإعدادات  أو بعض القيم لأشياء معينة ,مسار نغمة الرنين,حجم الخط,عدد coins في بعض الألعاب الخ …

ويتم تخزينها على هيئة ملف xml   بهيئة (keyvalue) كما سنرى لاحقاً

نبدأ بإنشاء   Shared Preferences:

;(Sharedpreferences  prefs =  getSharedPreferences (“myPrefs” ,MODE_PRIVATE

قمنا بتعريف object من نوع Sharedpreferences   وانشئنا ملف xml في الهاتف يحمل اسم myPrefs

والان نقوم بوضع القيم داخل هذا الملف كما يلي :

يمكنك وضع بيانات من الأنواع Boolean , float , int , long , String ,String على سبيل المثال سنضع قيمة من نوع String ولتكن اسم “Hareth”  ونخزنه داخل Shared Preferences,  نلاحظ ان الميثود putString تأخذ ٢ بارامتر,الأول وهو ال key من نوع String وهو الذي يتم استدعاؤه عند جلب القيمة كما في المثال والبارامتر الثاني وهي القيمة الذي تريد تخزينها ولا ننسى وضع  .()apply لحفظ القيمة .

بعد ذلك قمنا بإنشاء String وأسميناه aStringfromShared ونلاحظ أيضاً عند الإستدعاء يوجد ميثود getString وهي تأخذ ٢ بارامتر,الأول هو key ويجب أن يكون نفس key الذي قمنا بإنشاءه سابقاً,اما البارامتر الثاني فهي القيمة الإفتراضية  يمكن وضعها null او أي قيمة تريد.. نجرب أن نطبع القيمة التي قمنا بتخزينها : فستجد انها الاسم ” Hareth ” .

فعلياً عندما تقوم بإنشاء Shared Preferences فإنه يقوم بإنشاء ملف بصيغة xml في داخل مجلد التطبيق بنفس الإسم الذي وضعته,في حالتي هو myPrefs فإذا ذهبت الى متصفح الملفات فستجد عدة مجلدات منها shared_prefs وداخلها ستجد جميع ملفات Shared Preferences التي قمت بإنشائها

واذا قمنا بفتح ملف myPrefs.xml سنجد بداخله القيمة التي قمنا بتخزينها مع key . كما يلي :

تنفيذ أمر معين عند فتح التطبيق لأول مرة :

في بعض المشاريع قد تحتاج لفعل شيئ ما فقط عند تشغيل التطبيق لأول مرة (كتحميل بعض البيانات من السيرفر,حفظ بيانات مستخدم,تسجيل الدخول الخ..) كيف يمكننا فعل ذلك؟ بسيطة جداً كل ماعليك هو إنشاء Shared Preferences ,نقوم بأخذ القيمة isFirstTime من Shared Preferences , وفي حال لم يتم تخزينها سابقاً (أي أنه هذه أول مرة يتم فيها تشغيل التطبيق ) عندها ستكون القيمة الإفتراضية true .

 

;(haredPreferences 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 قد ظهرت كما يلي :

وعند التشغيل لاحقاً سوف لا تظهر هذه ال Toast لانه لن يتحقق شرط isFirstTime .