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```
1040buildscript {
@@ -31,8 +61,8 @@ apply plugin: 'com.neenbedankt.android-apt'
3161
3262//...
3363dependencies {
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有三个参数可以配置。
831132 . save:用来声明是否需要持久化这个字段。
84114
851153 . 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// 对象类型保存
140162Settings.LoginUser loginUser = new Settings.LoginUser();
141163loginUser.setUsername("username");
142164loginUser.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// 获取
0 commit comments