讓SharedPreference操作更簡易
這篇文章寫的是關於Android開發中,資料持久化所使用到的SharedPreference的相關內容。SharedPreference可以讓資料通過鍵值對的方式快取到磁碟中,這是它的一大特性。為了讓SharedPreference的使用更加簡單和支援AES加密等功能,所以基於SharedPreferences封裝了一個簡單易用的框架,它的名字叫MicroKV。不多說,直接進入主題。
Github地址: https://github.com/mailhu/microkv
安裝引入
步驟一、將JitPack儲存庫新增到根目錄的build.gradle中:
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
步驟二、在專案的app模組下的build.gradle裡:
dependencies { implementation 'com.github.mailhu:microkv:1.3.8' }
初始化
在你的專案自定義的Application類中初始化MicroKV元件。
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //MicroKV元件初始化 MicroKV.initialize(this); } }
儲存資料與加密
- defaultMicroKV( ) :獲取MicroKV物件,同時使用當前應用程式的包名來命名儲存資料檔名。
- setKV( ) :該方法已使用了過載,支援的資料型別有int、long、float、boolean、String和Set<String>。其中儲存long和float型別的數值,記得在數值的末尾加上"L"和"f "。
- save( ) :非同步儲存資料,無返回值。當然也可以使用 commit( ) 儲存資料,返回值型別為boolean型。
- customize( ) :引數一:自定義儲存檔案的檔名;引數二:是否開啟加密,若不填寫,預設不開啟。當開啟加密後,MicroKV會對該檔案中所有的字串進行加密。
//通過建立物件呼叫 MicroKV kv = MicroKV.defaultMicroKV(); kv.setKV("int", 1949);//寫入一個int型別的資料 kv.setKV("long", 299792458L);//寫入一個long型別的資料 kv.setKV("float", 3.14f);//寫入一個float型別的資料 kv.setKV("bool", true);//寫入一個boolean型別的資料 kv.setKV("string", "Hello MicroKV");//寫入一個String的資料 kv.save();
//鏈式呼叫 MicroKV.defaultMicroKV() .setKV("int", 2019) .setKV("long", 299792458L) .setKV("float", 3.14f) .save();
//自定義檔名和開啟加密功能 MicroKV.customize("MyInfo", true) .setKV("nickname", "Lake") .setKV("mail", "[email protected]") .setKV("address", "廣東 廣州") .setKV("age", 20) .save();
<!--加密後的內容--> <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="address">XMto1+cyq000i+/rYqJIXA==</string> <string name="nickname">AJumyR6uzPPx8xnObCwuHA==</string> <int name="age" value="20" /> <string name="mail">wraiunVGIIGup9GS6uXe8g==</string> </map>
讀取資料和解密
- getInt( ) :讀取int型別的資料,若讀取的鍵值不存在,會自動返回一個預設值,其他同類方法參考下面相關的程式碼。
- getKV( ) :可以給該方法第二個引數指定預設值,若設定預設值的資料型別是long和float,需要分別在預設值的末尾加上"L"和"f"。
//通過指定方法讀取資料 MicroKV kv = MicroKV.defaultMicroKV(); int i = kv.getInt("int"); long l = kv.getLong("long"); float f = kv.getFloat("float"); boolean b = kv.getBoolean("bool"); String s = kv.getString("string");
//通過過載方法讀取資料 MicroKV kv = MicroKV.defaultMicroKV(); int i = kv.getKV("int", 0); long l = kv.getKV("long", 0L); float f = kv.getKV("float", 0f); boolean b = kv.getKV("bool", false); String s = kv.getKV("string", "");
//自定義檔案和已加密的內容讀取 MicroKV kv = MicroKV.customize("MyInfo", true); String nickname = kv.getString("nickname"); String mail = kv.getString("mail"); String address = kv.getKV("address", "中國"); int age = kv.getKV("age", 0);
更新資料
更新資料的過程只需填寫需要更新的鍵和值,如何呼叫save( )方法即可。
//非加密型別更新 MicroKV.defaultMicroKV() .setKV("int", 2020) .setKV("float", 3.14159f) .save();
//加密型別更新 MicroKV.customize("MyInfo", true) .setKV("nickname", "Lake Zhang") .setKV("address", "廣東 湛江") .save();
移除資料
- removeKV( ) :用於移除某個鍵值對。
- removeKVs( ) :用於移除多個鍵值對。
//移除某個鍵值對 MicroKV.defaultMicroKV().removeKV("int"); MicroKV.customize("MyInfo").removeKV("age"); //需要移除多個鍵值對 String[] strings = new String[]{"nickname", "address"}; MicroKV.customize("MyInfo").removeKVs(strings);
結語
以上是MicroKV的使用方法,如果需要更詳細的使用文件,可以到Github上檢視該倉庫的readme文件。MicroKV相當於是SharedPreference的操作框架,和SharedPreference支援的資料型別保持一致,同時加入資料加密等功能。MicroKV在設計的過程中一直圍繞“微”字展開,一切操作都集中在MicroKV這個類上,開發者可以很輕鬆地上手使用。只要處理的資料不復雜,對高效能要求不苛刻,MicroKV可以滿足日常的使用場景。

麻雀雖小,五臟俱全

文件目錄