Skip to content

Commit c425380

Browse files
committed
Merge remote-tracking branch 'origin/master'
# Conflicts: # aptpreferences-compiler/src/main/java/com/thejoyrun/aptpreferences/AptPreferencesProcessor.java
2 parents 42ce723 + b9b5ce8 commit c425380

File tree

4 files changed

+44
-30
lines changed

4 files changed

+44
-30
lines changed

.idea/gradle.xml

Lines changed: 1 addition & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,39 @@
22

33
[![Release](https://jitpack.io/v/joyrun/AptPreferences.svg)](https://jitpack.io/#joyrun/AptPreferences)
44

5-
AptPreferences是基于面向对象设计的快速持久化框架,目的是为了简化SharePreferences的使用,减少代码的编写。可以非常快速地保存基本类型和对象。AptPreferences是基于APT技术实现,在编译期间实现代码的生成,支持混淆。支持多库,根据不同的用户区分持久化信息。
5+
AptPreferences是基于面向对象设计的快速持久化框架,目的是为了简化SharePreferences的使用,减少代码的编写。可以非常快速地保存基本类型和对象。AptPreferences是基于APT技术实现,在编译期间实现代码的生成,支持混淆。根据不同的用户区分持久化信息。
66

7+
### 特点
8+
1. 把通过的Javabean变成SharedPreferences操作类
9+
2. 支持保存基本类型及对象
10+
3. 支持根据不同的用户区分持久化信息。
11+
12+
### 简单例子
13+
##### 定义javabean类
14+
```
15+
@AptPreferences
16+
public class Settings {
17+
private long loginTime;
18+
private LoginUser loginUser;
19+
// get、set方法
20+
}
21+
```
22+
##### 使用方式
23+
```
24+
//初始化
25+
AptPreferencesManager.init(this, null);
26+
// 保存信息
27+
SettingsPreference.get().setLoginTime(System.currentTimeMillis());
28+
SettingsPreference.get().set(new LoginUser("Wiki"));
29+
// 获取信息
30+
long loginTime = SettingsPreference.get().getLoginTime();
31+
LoginUser loginUser = SettingsPreference.get().getLoginUser();
32+
```
33+
从上面的简单例子可以看到,我们需要做SharePreferences持久化,仅仅定义一个简单的javabean类(Settings)并添加注解即可,这个框架会根据javabean生成带有持久化功能的SettingsPreference类,通过这个类就可以非常简单去保持或者获取数据,大大简化了SharePreferences的使用,也可以保持对象。
34+
### 项目地址
35+
https://github.com/joyrun/AptPreferences
736
### 一、配置项目
37+
838
##### 配置项目根目录 build.gradle
939
```
1040
buildscript {
@@ -31,8 +61,8 @@ apply plugin: 'com.neenbedankt.android-apt'
3161
3262
//...
3363
dependencies {
34-
compile 'com.github.joyrun.AptPreferences:aptpreferences:0.2.3'
35-
apt 'com.github.joyrun.AptPreferences:aptpreferences-compiler:0.2.3'
64+
compile 'com.github.joyrun.AptPreferences:aptpreferences:0.4.2'
65+
apt 'com.github.joyrun.AptPreferences:aptpreferences-compiler:0.4.2'
3666
}
3767
```
3868

@@ -83,7 +113,7 @@ AptField有三个参数可以配置。
83113
2. save:用来声明是否需要持久化这个字段。
84114

85115
3. preferences:这个属性仅仅适用于对象类型的字段,用来声明这个是以对象的方式保存,还是以preferences的方式保存。如果是true,就可以通过settingsPreference.getPush().isOpenPush()的方式存取。
86-
116+
4. global:默认是true,如果设置为false时,和AptPreferencesManager.setUserInfo()配合,可以为不同的用户进行持久化,达到每个用户有不用的设置。
87117

88118

89119
### 四、初始化
@@ -115,34 +145,26 @@ public class MyApplication extends Application{
115145

116146

117147

118-
### 五、获取持久化对象
119-
148+
### 五、根据不同的用户设置
149+
如果app支持多用户登录,需要根据不用的用户持久化,可以通过下面方法配置。再通过@AptField(global = false),就可以针对某个字段跟随用户不同进行持久化。
120150
```
121-
122-
// 提供一个默认的获取方法
123-
124-
SettingsPreferences settingsPreference = SettingsPreferences.get("name");
125-
126-
// 可以根据不用的用户名称获取
127-
128-
SettingsPreferences settingsPreference = SettingsPreferences.get("name");
129-
151+
AptPreferencesManager.setUserInfo("uid");
130152
```
131153

132154
### 六、代码调用
133155

134156
```
135157
136158
// 普通类型保存
137-
settingsPreference.setUseLanguage("zh");
138-
settingsPreference.setLastOpenAppTimeMillis(System.currentTimeMillis());
159+
SettingsPreferences.get().setUseLanguage("zh");
160+
SettingsPreferences.get().setLastOpenAppTimeMillis(System.currentTimeMillis());
139161
// 对象类型保存
140162
Settings.LoginUser loginUser = new Settings.LoginUser();
141163
loginUser.setUsername("username");
142164
loginUser.setPassword("password");
143-
settingsPreference.setLoginUser(loginUser);
165+
SettingsPreferences.get().setLoginUser(loginUser);
144166
// 对象类型带 @AptField(preferences = true) 注解的保存,相当于把 push相关的放在一个分类
145-
settingsPreference.getPush().setOpenPush(true);
167+
SettingsPreferences.get().getPush().setOpenPush(true);
146168
147169
148170
// 获取

app/src/main/java/com/thejoyrun/aptpreferences/SettingsInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class SettingsInfo {
1818

1919
@AptField(preferences = true,global = false)
2020
private Run run;
21-
21+
@AptField(global = false)
2222
private LoginUser loginUser;
2323

2424
public LoginUser getLoginUser() {

aptpreferences-compiler/src/main/java/com/thejoyrun/aptpreferences/AptPreferencesProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
156156
if (name.startsWith("set")) {
157157
if (isObject) {
158158
MethodSpec setMethod = MethodSpec.overriding(executableElement)
159-
.addStatement(String.format("mEdit.putString(getRealKey(\"%1$s\",%b), AptPreferencesManager.getAptParser().serialize(%1$s)).apply();", fieldName, globalField))
159+
.addStatement(String.format("mEdit.putString(realName(\"%s\",%b), AptPreferencesManager.getAptParser().serialize(%s)).apply()", fieldName,globalField,fieldName))
160160
.build();
161161
methodSpecs.add(setMethod);
162162
continue;

0 commit comments

Comments
 (0)