همونطور که احتمالاً میدونید، SharedPreferences حافظه بلندمدت موبایل برای نگهداری اطلاعات کوچک و کوتاه مثل تنظیمات برنامه است. یه وقتهایی برای برخی اطلاعات، نمیصرفه دیتابیس رو درگیر کنید و اینجا SP خیلی میتونه مفید باشه. برای مثال، میتونید توی یک بازی، Highscore رو توی SP ذخیره کنید.
خوب حالا برای اینکه بتونید توی برنامه خودتون یکسری مقادیر رو از SharedPreferences بخونید یا داخلش بنویسید، روشهای مختلفی هست که من یک روش رو که خودم استفاده میکنم، خدمتتون عرض میکنم.
ابتدا یک کلاس به پروژه اضافه کنید به اسم Globals و این کد رو داخلش بنویسید:
public class Globals extends Application { public static Context context; public static SharedPreferences preferences; public static SharedPreferences.Editor editor; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); preferences = PreferenceManager.getDefaultSharedPreferences(context); editor = preferences.edit(); } }
حالا توی AndroidManifest.xml این اتریبیوت رو به تگ application اضافه کنید:
<application android:name=".Globals" ... </application>
حالا هرجای برنامه که خواستین چیزی رو توی حافظه بلندمدت گوشی ذخیره کنید (که با خروج از برنامه از بین نمیره)، میتونید این شکلی کار کنید:
Globals.editor.putInt("itemName", itemValue); Globals.editor.commit();
نقل قول:نکته: بجای "itemName" باید اسم متغیر و بجای itemValue مقدارش رو بگذارین
برای خوندن هم اینطوری میشه کار کنید:
int value = Globals.preferences.getInt("itemName", 0);
نقل قول:نکته: برحسب اینکه نوع متغیر چی بوده، بجای getInt میتونید از getFloat و getString و... استفاده کنید. بجای "itemName" اسم متغیر که توی مرحله قبل ذخیره کردین رو بگذارین و بجای 0 هم مقدار پیشفرضی رو مشخص میکنید که اگه اون متغیر توی حافظه بلندمدت ذخیره نشده بود، برگشت داده بشه
این اطلاعات فقط با Uninstall شدن برنامه یا درصورتی که کاربر توی تنظیمات Applications گوشی، گزینه Clear Data رو روی برنامه انتخاب کنه، از بین میرن و اگه این اتفاقات نیفته، درطول اجراهای مختلف برنامه و حتی خروجی کامل از برنامه یا حتی Restart شدن گوشی موبایل هم از بین نخواهد رفت.