تخزين الإعدادات في الأندرويد | Shared Preferences

AbdulAlim Rajjoubمنذ 6 سنوات

   ماهو 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");

لمزيد من المعلومات عبر موقع المطورين

 

كلمات دليلية: android settings shared
3
إعجاب
4876
مشاهدات
0
مشاركة
0
متابع

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !