MMKV_MMKV—强大的存储工具
###前言
在Android開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)使用到一些存儲(chǔ)。如果不是超量級(jí)數(shù)據(jù)的話,我們經(jīng)常使用`sharepreferences`存儲(chǔ),關(guān)于`sharepreferences`的封裝使用,可以參考我的另一篇文章:
[SpUtil多樣加密存儲(chǔ),兼容android9.0](http://www.demodashi.com/demo/15058.html)
那么,當(dāng)你的數(shù)據(jù)量在不需要使用數(shù)據(jù)庫(kù),但`sharepreferences`感覺(jué)又無(wú)法承載的時(shí)候,是不是超級(jí)尷尬?那么今天我就要講一款存儲(chǔ)利器—**MMKV**
今天涉及的內(nèi)容:
1. MMKV存儲(chǔ)優(yōu)勢(shì)
2. MMKV存儲(chǔ)支持的數(shù)據(jù)類(lèi)型
3. MMKV引入依賴
4. MMKV存儲(chǔ)與獲取
5. MMKV更多知識(shí)
6. MainActivity中使用代碼
7. 運(yùn)行結(jié)果及項(xiàng)目結(jié)構(gòu)圖
先來(lái)波效果圖

####一. MMKV存儲(chǔ)優(yōu)勢(shì)
MMKV 是騰訊旗下開(kāi)發(fā)的一款存儲(chǔ)組件,采用 `key - value`方式存儲(chǔ),存儲(chǔ)數(shù)據(jù)種類(lèi)比較多,讀寫(xiě)效率高
其有以下優(yōu)點(diǎn):
- 非常高效。MMKV使用mmap與文件保持內(nèi)存同步,使用protobuf對(duì)數(shù)值進(jìn)行編碼/解碼,充分利用Android,實(shí)現(xiàn)最佳性能。
- 多進(jìn)程并發(fā):MMKV支持進(jìn)程之間的并發(fā)讀寫(xiě)訪問(wèn)。
- 易于使用的。你可以隨時(shí)使用MMKV。所有的更改都會(huì)立即保存,不需要同步,也不需要apply調(diào)用。
- 小。少數(shù)幾個(gè)文件:MMKV包含進(jìn)程鎖、編碼/解碼幫助程序和mmap邏輯等等。很整潔。
大約60K的二進(jìn)制大小:MMKV在每個(gè)架構(gòu)上增加了大約60K的應(yīng)用程序大小,而壓縮(apk)時(shí)增加的就少多了。
####二. MMKV存儲(chǔ)支持的數(shù)據(jù)類(lèi)型
`MMKV`存儲(chǔ)數(shù)據(jù)以`key-value`形式存儲(chǔ),其接收以下數(shù)據(jù)類(lèi)型:
- boolean
- int
- long
- float
- double
- String
- set集合
- byte[]數(shù)組
- 可序列化對(duì)象
####三.MMKV引入依賴
在你項(xiàng)目的`app_module`對(duì)應(yīng)的`build.gradle`中添加如下依賴:
```
dependencies {
implementation 'com.tencent:mmkv-static:1.0.23'
}
```
然后在你項(xiàng)目的啟動(dòng)處(一般我們放到自定義的`Application`中)進(jìn)行初始化:
```
//MMKV初始化
String rootDir = MMKV.initialize(this);
```
####四.MMKV存儲(chǔ)與獲取
```
//獲得默認(rèn)存儲(chǔ)對(duì)象
MMKV kv = MMKV.defaultMMKV();
//存boolean值
kv.encode("bool", true);
boolean bValue = kv.decodeBool("bool");
LogUtil.i("========bValue===="+bValue);
//存int值
kv.encode("int", Integer.MIN_VALUE);
int iValue = kv.decodeInt("int");
LogUtil.i("========iValue===="+iValue);
//存long值
kv.encode("long",60L);
long longValue=kv.decodeLong("long");
LogUtil.i("========longValue===="+longValue);
//存float值
kv.encode("float",30f);
float floatValue=kv.decodeFloat("float");
LogUtil.i("========floatValue===="+floatValue);
```
####五.MMKV更多知識(shí)
MMKV還有更多功能,如:
- 自定義存儲(chǔ)實(shí)例
- 自定義存儲(chǔ)路徑
- 設(shè)置是否加密及自定義加密的key
- 查詢及刪除等方法
更多使用方法,請(qǐng)查看demo,這里就不贅述了。
####六.MainActivity中使用代碼
下面貼出MainActivity代碼:
```
public class MainActivity extends AppCompatActivity {
private TextView mTextView;
private Button mBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView=findViewById(R.id.tv);
mBtn=findViewById(R.id.btn);
mTextView.setText("MMKV存儲(chǔ)測(cè)試");
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//MMKV使用
test();
// //SharedPreferences遷移
// testMoveData();
//
// //設(shè)置加密或銘文存儲(chǔ)
// testEncode();
//
// //自定義存儲(chǔ)路徑
// testPath();
}
});
}
}
```
####七.運(yùn)行結(jié)果及項(xiàng)目結(jié)構(gòu)圖
效果圖

項(xiàng)目結(jié)構(gòu)圖

今天的內(nèi)容就講到這里了,謝謝大家。
總結(jié)
以上是生活随笔為你收集整理的MMKV_MMKV—强大的存储工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: cast()函数
- 下一篇: 大致看了下伍德里奇的《计量经济学导论》