歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 中替代 sharedpreferences 工具類的實現

Android 中替代 sharedpreferences 工具類的實現

日期:2017/3/1 9:29:07   编辑:Linux編程

背景

想必大家一定用過 sharedpreferences 吧!就我個人而言,特別討厭每次 put 完數據還要 commit。對 我就是這麼懶!哈哈。另外,sharedpreferences 不能存類,集合和bitmap等數據!這點也讓人非常不爽啊!所以,我就在這個美好的星期天撸了名為 SHARE 的工具類用來替代 sharedpreferences。


項目介紹

整體架構

先來看一下,整體架構圖(畫的不好請大家見諒):

從圖中,我們可以了解到,當我們 put 數據的時候,我們同時存入到 內存和和sd卡中。讀取的時候,優先從內存中獲取,如果內存中沒有,則從sd中獲取。如果兩者都沒有,則使用用戶自己設置的默認值!

代碼介紹

下來看一下代碼目錄結構:

  • DiskLruCache:硬盤緩存的解決方案(非Google官方編寫,但獲得官方認證。地址)
  • Cache:接口。抽象了對數據的操作
  • MemoryCache:內存緩存,實現了Cache接口
  • DiskCache:硬盤緩存,同樣實現了Cache接口
  • Share:這個類就是我們使用的!他主要是提供了 put 和 get兩種方法!其實就是對 MemoryCache 和 DiskCache 兩個類的操作!

使用

在 Application中初始化:

@Override
public void onCreate() {
    super.onCreate();
    File file = new File(Environment.getExternalStorageDirectory().toString() + File.separator + "sample");
    if (!file.exists()) {
        file.mkdirs();
    }
    Share.init("CACHE", 10 * 1024, file.toString());
}

之後,你就可以任意的使用它了!

    //設置字符串
    Share.putString("str", "你好啊");
    //設置int
    Share.putInt("int", 1);
    //設置boolean
    Share.putBoolean("boolean", true);
    //設置double
    Share.putDouble("double", 2.1d);
    //設置long
    Share.putLong("long", 20000);
    //設置flot
    Share.putFloat("float", 2.2f);
    //設置類
    Share.putObject("obj", people);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dd);
    //設置bitmap
    Share.putBitmap("bitmap", bitmap);
    //設置集合
    Share.putObject("list", items);

    //得到字符串
    String str=Share.getString("str");
    //得到double
    double dd=Share.getDouble("double", 0.0d);
    //得到int
    int value=Share.getInt("int", 0);
    //得到float
    float ff=Share.getFloat("float", 0.0f);
    //得到bitmap
    Bitmap map=Share.getBitmap("bitmap");
    //得到集合
    List<String> copy= (List<String>) Share.getObject("list");
    .....
    

使用就是如此簡單!

近期要完成的新功能

1.增加異步 get 和 put.

2.對泛型的支持.


項目地址

  • GitHub

希望這個項目對大家有用。也希望多 star .同時也能多多提出修改意見!不管是對項目本身還是代碼!!!!

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved