خانه » لایبرری های مفید و تجربیات شخصی خیلی مفید !!! » استفاده آسان از SharedPrefrences با لایبرری SharedDataAccess

استفاده آسان از SharedPrefrences با لایبرری SharedDataAccess

در اندروید ۳ روش برای ذخیره داده ها به صورت local وجود دارد. استفاده از دیتابیس، استفاده از فایل و استفاده از SharedPrefrences. که هر کدام مزیت و جایگاه خودش رو دارد.

مثلا در صورتی که نیاز باشه جدولی از داده ها رو ذخیره کنیم ، بهترین راه دیتابیس و اگر نیاز باشد که تعدادی فیلد (مثلا Id کاربر ، نام کاربر و یا token) رو نگهداری کنیم ، بهترین راه استفاده از SharedPrefrences است.

قبلا در مورد استفاده از SharedPrefrences ها پست گذاشتم اما در این پست قصد دارم لایبرری رو بهتون معرفی کنم که کارتون رو خیلی ساده می کنه.

این لایبرری رو ابتدا واسه خودم نوشته بودم و تصمیم گرفتم که اون رو توی github و وبلاگ بزارم تا دوستای برنامه نویس هم بتونن ازش استفاده کنن.

با این لایبرری علاوه بر دیتا های ساده مثل فیلد های int و String ، میتونید یک آبجکت رو هم ذخیره کنید (مثلا آبجکت UserInfo که داخل خودش چند فیلد int و String داره)

 

نحوه استفاده از این لایبرری به این صورت هست که، ابتدا برای متغییر های مورد نظرتون یک اینترفیس میسازید و در اون متد های set و get رو تعریف می کنید.

مثلا متغیری به اسم token دارید از جنس String ، اینترفیس رو به شکل زیر درست می کنید

public interface SharedModel {
    String getToken();
    void setToken(String token);
}

در بالا یک اینترفیس تعریف کردم و ۲ متد getToken و setToken رو داخلش نوشتم

حالا کافیه که این متد رو به لایبرری بدم تا بدنه اون رو خودش موقع اجرای برنامه درست کنه:

SharedModel sharedModel = new SharedDataAccess(this).create(SharedModel.class);

در بالا ، اینترفیس رو رو به متد create کلاس SharedDataAccess دادم و اون برای از روی اینترفیس یک کلاس ساخت از جنس اینترفیس.

 

حالا میتونید به راحتی با استفاده از instance کلاسی که ساخته شده ، متغیر خودتون رو set یا get کنید:

sharedModel.setToken("MyToken");

در بالا MyToken رو در SharedPrefrences ذخیره می کنم

String token = sharedModel.getToken();

و در اینجا مقدار اون رو از SharedPrefrences میخونم.

 

تموم شد، به همین سادگی 😀 .

دیگه نیازی نیست هر دفعه برای هر متغیر کلی کد بزنید ، در واقع بدنه متد رو این لایبرری واستون مینویسه و نیازی نیست که شما درگیرش بشید.

حالا هرچی متغیر دارید میتونید با اضافه کردن متد های get و set به همین اینترفیس، به کلاس اضافه کنید.

معمولا من اینترفیس رو توی کلاس Application به صورت static در متد onCreate یک بار با استفاده از SharedDataAccess میسازم و اون رو public می کنم و هرجا لازم دارم ازش استفاده می کنم، اینجوری دیگه نیاز نیست هر دفعه context رو هم بهش پاس بدم.

 

چند تا نکته:

  • اسم متد هایی که در اینترفیس تعریف می کنید حتما باید با get و یا set شروع بشه، اسمی که بعد از get یا set میاد به عنوان key استفاده میشه.
  • متغیر هایی که SharedPrefrences پشتیبانی می کنه int ,boolean , long , float و String هستند و متغیر double پشتیبانی نمیشه.

 

بخش جذاب

همونطور که گفتم شما میتونید با استفاده از این لایبرری یک آبجکت رو هم ذخیره کنید

مثلا فرض کنید آبجکت زیر رو داریم

public class MyObject {
    public int id;
    public String name;

    public MyObject(){

    }

    public MyObject(int id,String name){
        this.id = id;
        this.name = name;
    }
}

که شامل ۲ فیلد int و String هست

حالا به اینترفیس که قبلا ساخته بودم ۲ متد زیر رو هم اضافه می کنم :

public interface SharedModel {
    String getToken();
    void setToken(String token);

    MyObject getMyObject();
    void setMyObject(MyObject myObject);
}

همونطور که میبینید مثل بقیه متد ها با get و set هست فقط نوع متغیر از نوع آبجکت هست.

حالا به راحتی میتونم آبجکت رو ذخیره کنم :

sharedModel.setMyObject(new MyObject(1,"Test Data"));

و یا اون رو بخونم

MyObject myObject = sharedModel.getMyObject();

 

این هم از قسمت جذاب.

 

چند نکته:

فیلد های آبجکت باید از نوع های باشند که SharedPrefrences پستیبانی می کنه (int ,boolean , long , float و String)

فیلد ها باید public باشند، در غیر این صورت لایبرری دسترسی به اون ها نداره تا بتونه مقادیرش رو ذخیره کنه یا مقادیر رو داخلشون بریزه

در صورتی که constructor دارید باید یک constructor خالی هم بسازید تا لایبرری بتونه از این کلاس یه instance بسازه.

 

افزودن لایبرری به پروژه با gradle

برای اضافه کردن این لایبرری به پروژتون به فایل build.gradle اصلی (موجود در root پروژه) کد زیر رو اضافه کنید

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

سپس به dependency های gradle لایبرری رو اضافه کنید:

dependencies {
    compile 'com.github.eiliyaabedini:lib-sharedDataAccess:1.0.2'
}

به این ترتیب لایبرری به پروژه اضافه میشه.

لینک لایبرری در github: https://github.com/eiliyaabedini/lib-sharedDataAccess

 

امیدوارم این لایببری بدرتون بخوره. 🙂

برچسب ها:
پست قبلی
پست بعدی

درباره ایلیا عابدینی

برنامه نویس اندروید و کارشناس مهندسی پزشکی، نفر سوم مسابقه برنامه نویسی اندروید http://www.schallenge.ir ، از سال 92 برنامه نویسی اندروید رو شروع کردم و در حال حاضر در شرکت عصر دانش در حال توسعه اپلیکیشن تجارت پی می باشدم ، این وبلاگ رو ساختم تا تجربیات روزانه و مفید خودم رو داخل اون بزارم. رزومه : iact.ir/cv

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نمی شود.علامت دارها لازمند. *

*

رفتن به بالا