گاهی اوقات شما نیاز دارید برخی داده ها را در طول برنامه بخوانید یا آن را در سناریو های متفاوت همچون عضویت کاربران، تنظیمات برنامه و.. استفاده نمایید.
راه های مختلفی برای انجام این کار وجود دارد، برای نمونه شما می توانید یک متغیر سراسری ایجاد نموده و در طول برنامه از آن استفاده نمایید، اما این کار یک مشکل دارد و آن حذف داده ها در صورت خروج کاربر از برنامه می باشد.
اما چاره چیست؟
اندروید برای حل این مشکل کلاس بسیار کار آمد Shared را به ما پیشنهاد داده است!
اما SharedPreferences چیست؟
SharedPreferences یک نوع دیتا تایپ key -value می باشد که داده های آن می تواند ( string, long, int, float and Boolean) باشد که این اطلاعات در یک فایل در پوشه ی اصلی برنامه شما ذخیره می شوند.
شما می توانید به این فایل در هر نقطه از برنامه ی خود دسترسی داشته باشید و اطلاعات را از فایل مربوطه بخوانید. نکته جالب در مورد فایل مربوط به SharedPerferences این می باشد که شما نمی توانید از یک برنامه دیگر به فایل sharedperferences برنامه دیگری دسترسی پیدا کنید، بنابراین استفاده از SharedPreferences بسیار امن می باشد.
اندروید اطلاعات مربوط به sharedPerfrences را در یک فایل XML در پوشه ی shared_perfs در حافظه داخلی دستگاه و زیر پوشه ی DATA/data/[application package] ذخیره سازی می کند.
اطلاعات و تنظیمات مربوط به هر برنامه بصورت اختصاصی می باشد و با حذف برنامه و یا حذف از داده های برنامه از بخش تنظیمات گوشی موبایل اطلاعات مربوط به sharedperferences برنامه مربوطه نیز حذف می شود.
آموزش استفاده از Shared Preferences در اندروید
Shared preferences در اپلیکشن ها با استفاده از متد getSharedPreferences() ایجاد میشود.
پس از آن شما با استفاده از یک شی editor می توانید بر روی saredPerferences ایجاد شده عملیات خواندن و نوشت را انجام دهید.
به کد زیر دقت کنید:
private static final String PREFERENCES_NAME = "ANDROID_TUTORIALS_HUB_PREFERENCES";
SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCES_NAME , Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();
همانطور که می بینید متد getSharedPreferences() دو ورودی به شرح زیر می گیرد:
ورودی اول: یک String که نام فایل یا sharedperferences ایجاد شده می باشد
ورودی دوم: حالت عملیاتی که خود شامل چندین نوع زیر می باشد:
حالت عملیاتی، MODE_PRIVATE: این حالت باعث ایجاد Sharedperferences بصورت خصوصی میشود.
حالت عملیاتی، MODE_WORLD_READABLE: در این حالت sharedperferences ایجاد شده قابلیت خواندن را دارد بنابرین در این حالت باید مواظب داده هایی که میخواهید ذخیره سازی کنید باشد
حالت عملیاتی، MODE_WORLD_WRITEABLE: این حالت نیز sharedperferences قابلیت نوشتن دارد
حالت عملیاتی، MODE_APPEND : این حالت نیز برای زمانی می باشد که شما قصد دارید بر روی داده های موجود داده ی جدید اضاف نمایید و قصد حذف داده های خود را ندارید
ذخیره داده ها در sharedperferences
ذخیره سازی داده ها با استفاده از شی ایجاد شده editor انجام می شود. شما می توانید هر نوع داده ای را مانند (boolean, float, int, long and string) را با استفاده از متد مربوط putDataType() ذخیره سازی نمایید، برای نمونه برای ذخیره سازی یک داده int میتوانید از متد putInt() استفاده نمایید.
متد ها دو ورودی میگیرند، اولی کلید و دومی مقدار یا value. کلید همیشه بصورت string یا رشته می باشد و پارامتر دوم نوع داده ای میباشد که قصد ذخیره سازی آن را داریم.در نهایت برای ذخیره سازی از دستور editor.commit() استفاده می کنیم.
به کدهای زیر دقت کنید:
editor.putBoolean("key_name", true); // storing boolean value - true/false
editor.putString("key_name", "string value"); // storing string value
editor.putInt("key_name", "int value"); // storing integer value
editor.putFloat("key_name", "float value"); // storing float value
editor.putLong("key_name", "long value"); // storing long value
editor.commit(); // commit changes
برای نمونه با استفاده از putFloat شما می توانید نوع داده ای Float را ذخیره نمایید. همانند دیگر متد ها متغیر اول این متد نام کلید و ورودی دوم داده مورد نظر برای ذخیره سازی می باشد.
از کلید ها برای باز خوانی sharedperferences مورد نظر استفاده می شود.
خواندن اطلاعات از sharedperferences
برای خواندن اطلاعات نیز همانند مرحله قبل که از متد های خاصی استفاده می شد، در این بخش نیز متد های خاص خود را دارد، برای نمونه برای خواندن و بازگردانی یک نوع داده String از متد getString() استفاده می شود. و بصورت کلی متد getDataTye() که DataType بیانگر نوع داده ای می باشد که می خواهیم بازخوانی کنیم کار خواندن اطلاعات را انجام می دهد. به نمونه های زیر دقت کنید:
// return preference value
// If value is not present return second parameter’s value
pref.getString("key_name", null); // getting String
pref.getInt("key_name", 0); // getting Integer
pref.getFloat("key_name", 0.0f); // getting Float
pref.getLong("key_name", 0L); // getting Long
pref.getBoolean("key_name", false); // getting boolean
متدهای getDataTye() همانطور که در کدهای بالا نیز مشاهده می کنید، دو ورودی می گیرد، ورودی اول نام کلید ذخیره سازی و ورودی دوم مقداری پیش فرض می باشد، درصورتی که کلید مورد نظر موجود نباشد یا حذف شده باشد مقدار پیش فرض در نظر گرفته خواهد شد.
دقت کنید که برای گرفتن اطلاعات نیازی به ایجاد شی editor نمی باشد
حذف Sharedperferences:
حذف Sharedperferences بسیار ساده می باشد، شما می توانید با فراخوانی متد remove(“key_name”) مقدار یک کلید خاص را حذف کیند، همچنین می توانید با متد clear() همه داده های یک editorرا حذف کنید.
editor.remove("email"); // deleting key email
editor.commit(); // commit changes
editor.clear();
editor.commit(); // commit changes
نمونه کد:
برای ایجاد یک saredperferences بصورت زیر عمل خواهیم کرد:
private static final String PREFERENCES_NAME = "ANDROID_TUTORIALS_HUB_PREFERENCES";
private SharedPreferences sharedPreferences;
Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
حال برای خواند اطلاعات یک saredperferences بصورت زیر عمل خواهیم کرد:
private static final String PREFERENCES_NAME = "ANDROID_TUTORIALS_HUB_PREFERENCES";
private SharedPreferences sharedPreferences;
String txt = sharedPreferences.getString(key, 0);
برای حذف نیز همانطور که توضیح داده شد از متد های remove() و delete() می توانید استفاده نمایید.
اگر این آموزش برای شما مفید بوده یا نظری در مورد مطالب بیان شده در این آموزش دارید از بخش نظرات با ما درمیان بگذارید.
برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *
ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *