Shared Preferences چیست؟ و آموزش استفاده از  Shared Preferences  در اندروید

Shared Preferences چیست؟ و آموزش استفاده از Shared Preferences در اندروید

SharedPreferences یک نوع دیتا تایپ key -value می باشد که داده های آن می تواند ( string, long, int, float and Boolean) باشد، شما می توانید به این فایل در هر نقطه از برنامه ی خود دسترسی داشته باشید

گاهی اوقات شما نیاز دارید برخی داده ها را در طول برنامه بخوانید یا آن را در سناریو های متفاوت همچون عضویت کاربران، تنظیمات برنامه و.. استفاده نمایید.

راه های مختلفی برای انجام این کار وجود دارد، برای نمونه شما می توانید یک متغیر سراسری ایجاد نموده و در طول برنامه از آن استفاده نمایید، اما این کار یک مشکل دارد و آن حذف داده ها در صورت خروج کاربر از برنامه می باشد.

اما چاره چیست؟

اندروید برای حل این مشکل کلاس بسیار کار آمد 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() می توانید استفاده نمایید.

 

 

اگر این آموزش برای شما مفید بوده یا نظری در مورد مطالب بیان شده در این آموزش دارید از بخش نظرات با ما درمیان بگذارید.

 


دسته بندی ها:

اندروید

ارسال نظر

برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *

ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *

اگر نظری برای این مطلب ارسال شد از طریق ایمیل مرا اطلاع بده!
لسیت نظرات
Sarman
سلام من میخوام یه int اولیه تعریف کنم که مثلا مقدارش 0 هست بعد با عملیاتی مثل کلیک دکمه 10 تا اضافه بشه چجوری میتونم تغییر مقدار int رو ذخیره کنم؟

پاسخ به این نظر

امیر
باسلام وعرض خسته نباشید بابت این آموزش عالی .یک سوال داشتم راستش مشکل من مربوط به این خط است " private static final String PREFERENCES_NAME = "ANDROID_TUTORIALS_HUB_PREFERENCES"; درصورت امکان میشه بگید این سطر یعنی چی و "ANDROID_TUTORIALS_HUB_PREFERENCES"; ازکجا اومد؟ با تشکر خیلی خیلی ویژه

پاسخ به این نظر

پاسخ
ایمان برومندزاده
خواهش میشه دوست عزیز... :)

پاسخ به این نظر

پاسخ
امیر
خیلی خیلی ممنون ....

پاسخ به این نظر

پاسخ
ایمان برومندزاده
سلام دوست عزیز خواهش میشه. ما در اون خط یه مقدار string بنام PREFERENCES_NAME رو بصورت final تعریف کردیم که بتونیم در همه قسمت ها به کلید دسترسی داشته باشید. شما میتونید در تابع getSharedPreferences(PREFERENCES_NAME , Context.MODE_PRIVATE); مقدار PREFERENCES_NAME رو هم بصورت دستی خودتون وارد کنید. این هیچ تفاوتی نداره. ما فقط یک مقدار تعریف کردیم که دسترسی به اون ساده تر باشه. همین. باز هم اگر سوالی داشتید من در خدمتم.

پاسخ به این نظر