رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش: نحوه استفاده از SharedPreferences
#1
Information 
همونطور که احتمالاً می‌دونید، 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 شدن گوشی موبایل هم از بین نخواهد رفت.
پاسخ
تشکر شده توسط: masiha68 , Eshpilen
#2
(01-02-1395، 10:05 ق.ظ)ADMIN نوشته:
حالا توی AndroidManifest.xml این اتریبیوت رو به تگ application اضافه کنید:

<application
    android:name=".Globals"
    ...
</application>
این واسه چی نیازه؟
پاسخ
تشکر شده توسط:
#3
برای اینکه این کلاس رو بعنوان کلاس اصلی Application معرفی کنیم. اینطوری هر کدی توی متد onCreate کلاس Globals بنویسیم قبل از هر اکتیویتی دیگه اجرا خواهد شد.
پاسخ
تشکر شده توسط: Eshpilen , YN97




کاربران در حال بازدید این موضوع: 2 مهمان