Skip to content

Commit 3ea0208

Browse files
committed
代码 1.0 完成
1 parent 01d5ecd commit 3ea0208

File tree

4 files changed

+126
-9
lines changed

4 files changed

+126
-9
lines changed

README.md

+120
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,122 @@
11
# MeKV
22
Key-value
3+
4+
MeKV 是 Android Key-Value 管理框架,为了解决 Android 平台下各种繁琐的配置类代码
5+
使用了 https://github.com/Tencent/MMKV 来存储数据,支持自定义存储数据
6+
7+
## 配置
8+
9+
```
10+
dependencies {
11+
implementation 'vip.ruoyun.mekv:core:1.0.0'
12+
annotationProcessor 'vip.ruoyun.mekv:mekv-compiler:1.0.0'
13+
}
14+
```
15+
16+
## 使用
17+
18+
初始化
19+
```java
20+
MeKV.init(new MMKVStrategy(this));
21+
```
22+
23+
两种模式
24+
- model 模式
25+
- key-value 模式
26+
27+
### model 模式
28+
支持的类型
29+
- Parcelable
30+
31+
```java
32+
@MeKV
33+
public class User implements Parcelable {
34+
private String name;
35+
36+
public String getName() {
37+
return name;
38+
}
39+
40+
public void setName(final String name) {
41+
this.name = name;
42+
}
43+
44+
//...Parcelable code
45+
}
46+
```
47+
48+
自定义 key
49+
```java
50+
@MeKV(key = "CustomKeyUserKey")
51+
public class User implements Parcelable {
52+
...
53+
}
54+
```
55+
56+
使用
57+
```java
58+
User user = UserMeKV.getUser();
59+
if (user != null) {
60+
user.setName("");
61+
user.getName();
62+
}
63+
UserMeKV.saveUser(user);
64+
```
65+
66+
### key-value 模式
67+
支持的类型
68+
- String
69+
- float
70+
- boolean
71+
- double
72+
- long
73+
- int
74+
- byte[]
75+
- Set<String>
76+
- Parcelable
77+
78+
不支持包装类型
79+
80+
```java
81+
@MeKV(isModel = false)
82+
public class People {
83+
//不需要 get/set 方法
84+
85+
@Ignore//不会自动生成属性代码
86+
private String name;
87+
88+
private boolean isOld;
89+
90+
private int age;
91+
92+
private double doubleMoney;
93+
94+
private long longMoney;
95+
96+
private byte[] mBytes;
97+
98+
private User user;//对象 必须 implements Parcelable
99+
100+
private Set<String> setString;
101+
}
102+
```
103+
104+
使用
105+
```java
106+
PeopleMeKV.getName();
107+
PeopleMeKV.getUser();
108+
PeopleMeKV.saveUser(new User());
109+
```
110+
111+
## 高级玩法
112+
自定义 MMKV https://github.com/Tencent/MMKV/wiki/android_advance_cn
113+
```java
114+
MMKV mmkv = MMKV.defaultMMKV();
115+
...code//MMKV高级特性
116+
MeKV.init(new MMKVStrategy(mmkv));
117+
```
118+
119+
120+
121+
122+

app/src/main/java/vip/ruoyun/mekv/demo/MainActivity.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ protected void onCreate(Bundle savedInstanceState) {
2828
UserMeKV.saveUser(user);
2929
User user1 = MMKV.defaultMMKV().decodeParcelable("", User.class);
3030

31-
PeopleMeKV.getPeople();
3231

33-
// PeopleMeKV.saveString();
34-
// PeopleMeKV.saveUser(new User());
32+
PeopleMeKV.getName();
33+
PeopleMeKV.getUser();
34+
PeopleMeKV.saveUser(new User());
3535

3636
StudentMeKV.getName();
3737

app/src/main/java/vip/ruoyun/mekv/demo/model/People.java

+2-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import vip.ruoyun.mekv.annotations.MeKV;
55
import vip.ruoyun.mekv.demo.User;
66

7-
@MeKV()
7+
@MeKV(isModel = false)
88
public class People {
99

1010
// @Ignore
@@ -18,12 +18,9 @@ public class People {
1818

1919
private long longMoney;
2020

21-
private Byte[] mBytes;
21+
private byte[] mBytes;
2222

2323
private User user;
2424

2525
private Set<String> setString;
26-
27-
28-
2926
}

mekv-processor/src/main/java/vip/ruoyun/mekv/processor/JavaWriter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public static void write(ModelClass modelClass, Filer filer, final Messager mess
106106
helloWorld.addMethod(remove);
107107
} else if (variableElement.asType().getKind() == TypeKind.ARRAY) {
108108
String function = "";
109-
if (variableElement.asType().toString().endsWith("Byte[]")) {
109+
if (variableElement.asType().toString().endsWith("byte[]")) {
110110
function = "decodeBytes";
111111
}
112112
if (function.length() == 0) {

0 commit comments

Comments
 (0)