پاسخ داده شد
0
0

اگر داده هایی کوچک داشته باشید، می توانید با shared preferences آن ها را ذخیره کنید.

shared preferences در اندروید - موستانگ

  • شما باید برای ارسال دیدگاه شوید
پاسخ عالی
0
0

ذخیره بصورت کلید-محتوا

اگر مجموعه کوچکی از اطلاعات را بصورت کلید-محتوا داشته باشید و بخواهید آن ها را روی حافظه گوشی ذخیره کنید، بهتر است از کلاس SharedPreferences استفاده کنید. شیئ این کلاس به فایلی اشاره می کند که شامل مجموعه های دوتایی از کلید-محتوا است و تابع هایی هم برای خواندن و نوشتن آن ها دارد. هر فایل shared preference ، توسط فریم ورک مدیریت شده و می تواند private یا shared باشد.

shared preferences در اندروید - موستانگ

در اینجا می خواهیم با مثالی، نحوه استفاده از این کلاس را برای خواندن و نوشتن داده آموزش دهیم:

دسترسی به داده های shared preference

با کمک یکی از دو تابع زیر، می توانید به داده های shared preference دسترسی داشته باشید یا اصلاً یک جدیدش را بسازید:

  • ()getSharedPreferences: از این تابع وقتی استفاده کنید که می خواهید چندین shared preference (که یک نام خاص دارند) را استفاده کنید (نام را به عنوان پارامتر اول به تابع می دهید). این تابع را می توانید از هر context ای در برنامه فراخوانی کنید.
  • ()getPreferences: این تابع را زمانی از یک اکتیویتی فراخوانی کنید که می خواهید تنها از یک shared preference در آن اکتیویتی استفاده کنید. چون این تابع، shared preferences پیش فرض مختص آن اکتیویتی را برمی گرداند، لازم به ذکر نام نیست.

بطور مثال، کد زیر فایل shared preference ای را برمی گرداند که با نام موجود در R.string.preference_file_key شناسایی می شود. سپس آن را در حالت private باز می کند (در این حالت، فایل تنها برای برنامه شما قابل دسترسی است).

جاوا:

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

کاتلین:

val sharedPref = activity?.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE)

وقتی می خواهید فایل های shared preference خودتان را نامگذاری کنید، باید از نام هایی استفاده کنید که نشان دهد متعلق به برنامه شما هستند. بهترین روش برای این کار اینست که نام برنامه تان را به آن ها اضافه کنید. بطور مثال:

com.example.myapp.PREFERENCE_FILE_KEY

اگر تنها یک فایل shared preference برای اکتیویتی خود می خواهید، از کد زیر استفاده کنید:

جاوا:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

کاتلین:

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)

*دقت کنید که حالت های MODE_WORLD_READABLE و MODE_WORLD_WRITEABLE از API Level 17 منسوخ شده اند. از بعد از اندروید 7 (API Level 24)، اگر از آن ها استفاده کنید، اکسپشن SecurityException پرتاب خواهد شد.

نوشتن در shared preference

برای نوشتن در یک فایل shared preference ، تابع ()edit را روی آن فراخوانی کرده و یک SharedPreferences.Editor بسازید. سپس با استفاده از تابع هایی نظیر ()putInt و ()putString، محتوای مورد نظر خود را نوشته و در انتها ()apply کنید.

جاوا:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score_key), newHighScore);
editor.apply();

کاتلین:

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    putInt(getString(R.string.saved_high_score_key), newHighScore)
    apply()
}

خواندن از shared preference

برای خواندن از یک فایل shared preference ، از تابع هایی نظیر ()getInt و ()getString استفاده کرده و نام کلیدی که محتوای آن را می خواهید را هم بدهید. می توانید یک مقدار پیش فرض تعریف کنید که اگر محتوایی وجود نداشت، آن مقدار برگردانده شود.

جاوا:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key);
int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);

کاتلین:

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key)
val highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue)
  • شما باید برای ارسال دیدگاه شوید
نمایش 1 نتیجه
پاسخ شما
اگر قبلاً حساب کاربری دارید با پر کردن فیلد های زیر یا به عنوان مهمان ارسال کنید.
نام*
ایمیل*
وب سایت