اگر داده هایی کوچک داشته باشید، می توانید با shared preferences
آن ها را ذخیره کنید.
- نفیسه افقی 4 سال قبل سوال کرد
- آخرین ویرایش 4 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید
ذخیره بصورت کلید-محتوا
اگر مجموعه کوچکی از اطلاعات را بصورت کلید-محتوا داشته باشید و بخواهید آن ها را روی حافظه گوشی ذخیره کنید، بهتر است از کلاس SharedPreferences
استفاده کنید. شیئ این کلاس به فایلی اشاره می کند که شامل مجموعه های دوتایی از کلید-محتوا است و تابع هایی هم برای خواندن و نوشتن آن ها دارد. هر فایل shared preference ، توسط فریم ورک مدیریت شده و می تواند private یا shared باشد.
در اینجا می خواهیم با مثالی، نحوه استفاده از این کلاس را برای خواندن و نوشتن داده آموزش دهیم:
دسترسی به داده های 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)
- نفیسه افقی 4 سال قبل پاسخ داد
- آخرین ویرایش 4 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید