@@ -37,18 +37,16 @@ https://github.com/taoweiji/AptPreferences
3737```
3838buildscript {
3939 repositories {
40- jcenter ()
40+ mavenCentral ()
4141 }
4242 dependencies {
43- classpath "com.android.tools.build:gradle:3.1.0"
4443 classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
4544 }
4645}
4746
4847allprojects {
4948 repositories {
50- jcenter()
51- maven { url "https://jitpack.io" }
49+ mavenCentral()
5250 }
5351}
5452```
@@ -59,8 +57,8 @@ apply plugin: 'com.android.application'
5957
6058//...
6159dependencies {
62- implementation 'com .github.taoweiji.AptPreferences :aptpreferences:0.9.5 '
63- annotationProcessor 'com .github.taoweiji.AptPreferences :aptpreferences-compiler:0.9.5 '
60+ implementation 'io .github.taoweiji:aptpreferences:1.2.0 '
61+ annotationProcessor 'io .github.taoweiji:aptpreferences-compiler:1.2.0 '
6462}
6563```
6664
@@ -77,23 +75,13 @@ open class Settings {
7775 @AptField
7876 open var useLanguage = "zh"
7977
80- @AptField(ignoreGroupId = false)
81- open lateinit var push: Push
82-
8378 @AptField(ignoreGroupId = false)
8479 open var loginUser: LoginUser? = null
8580
86- @AptField(save = false )
81+ @AptField(ignore = true )
8782 open var lastActionTimeMillis: Long = 0
8883}
8984
90- @AptPreferences
91- open class Push {
92- var isOpenPush = false
93- var isVibrate = false
94- var isVoice = false
95- }
96-
9785class LoginUser : Serializable {
9886 var username: String = ""
9987 var password: String = ""
@@ -104,7 +92,7 @@ class LoginUser : Serializable {
10492
10593### 三、注解及使用说明
10694
107- 我们提供了两个注解@AptPreferences 和@AptField (commit = false,save = true,preferences = false)。
95+ 我们提供了两个注解@AptPreferences 和@AptField (commit = false,ignore = false,ignoreGroupId = false)。
10896
10997###### @AptPreferences
11098
@@ -116,10 +104,9 @@ AptField有三个参数可以配置。
116104
1171051 . commit:可以配置使用commit还是apply持久化,默认是apply,需要在一些需要立刻保存到文件的可以使用commit方式,比如在退出APP时保存退出的时间。
118106
119- 2 . save :用来声明是否需要持久化这个字段。
107+ 2 . ignore :用来声明是否需要持久化这个字段,如果是false就不保存 。
120108
121- 3 . preferences:这个属性仅仅适用于对象类型的字段,用来声明这个是以对象的方式保存,还是以preferences的方式保存。如果是true,就可以通过settingsPreference.getPush().isOpenPush()的方式存取。
122- 4 . global:默认是true,如果设置为false时,和AptPreferencesManager.setUserInfo()配合,可以为不同的用户进行持久化,达到每个用户有不用的设置。
109+ 3 . ignoreGroupId:如果是true,那么该字段就会忽略GroupId,可以用于实现多用户登录的场景,部分字段需要区分用户发、设置为false;部分字段无需区分用户,是全局参数,那么就是true
123110
124111
125112### 四、初始化
@@ -169,14 +156,10 @@ Settings.LoginUser loginUser = new Settings.LoginUser();
169156loginUser.setUsername("username");
170157loginUser.setPassword("password");
171158SettingsPreferences.get().setLoginUser(loginUser);
172- // 对象类型带 @AptField(preferences = true) 注解的保存,相当于把 push相关的放在一个分类
173- SettingsPreferences.get().getPush().setOpenPush(true);
174-
175159
176160// 获取
177161String useLanguage = settingsPreference.getUseLanguage();
178162Settings.LoginUser loginUser1 = settingsPreference.getLoginUser();
179- boolean openPush = settingsPreference.getPush().isOpenPush();
180163```
181164
182165### 七、默认值
@@ -210,200 +193,6 @@ public class Settings {
210193
211194
212195
213- ### 八、详细转换代码
214-
215- ```
216-
217- @AptPreferences
218- public class Settings {
219- private long lastOpenAppTimeMillis;
220- // 使用commit提交,默认是使用apply提交,配置默认值
221- @AptField(commit = true)
222- private String useLanguage = "zh";
223- // 使用preferences的方式保存
224- @AptField(preferences = true)
225- private Push push;
226- // 使用对象的方式保存
227- private LoginUser loginUser;
228- // 不持久化该字段,仅仅保留在内存
229- @AptField(save = false)
230- private long lastActionTimeMillis;
231- public long getLastActionTimeMillis() {
232- return lastActionTimeMillis;
233- }
234- public void setLastActionTimeMillis(long lastActionTimeMillis) {
235- this.lastActionTimeMillis = lastActionTimeMillis;
236- }
237- public LoginUser getLoginUser() {
238- return loginUser;
239- }
240- public void setLoginUser(LoginUser loginUser) {
241- this.loginUser = loginUser;
242- }
243- public long getLastOpenAppTimeMillis() {
244- return lastOpenAppTimeMillis;
245- }
246- public void setLastOpenAppTimeMillis(long lastOpenAppTimeMillis) {
247- this.lastOpenAppTimeMillis = lastOpenAppTimeMillis;
248- }
249- public String getUseLanguage() {
250- return useLanguage;
251- }
252- public void setUseLanguage(String useLanguage) {
253- this.useLanguage = useLanguage;
254- }
255- public Push getPush() {
256- return push;
257- }
258- public void setPush(Push push) {
259- this.push = push;
260- }
261- public static class Push {
262- private boolean openPush;
263- private boolean vibrate;
264- private boolean voice;
265- public boolean isOpenPush() {
266- return openPush;
267- }
268- public void setOpenPush(boolean openPush) {
269- this.openPush = openPush;
270- }
271- public boolean isVibrate() {
272- return vibrate;
273- }
274- public void setVibrate(boolean vibrate) {
275- this.vibrate = vibrate;
276- }
277- public boolean isVoice() {
278- return voice;
279- }
280- public void setVoice(boolean voice) {
281- this.voice = voice;
282- }
283- }
284- public static class LoginUser implements Serializable{
285- public String username;
286- public String password;
287- public String getUsername() {
288- return username;
289- }
290- public void setUsername(String username) {
291- this.username = username;
292- }
293- public String getPassword() {
294- return password;
295- }
296- public void setPassword(String password) {
297- this.password = password;
298- }
299- }
300- }
301-
302- ```
303-
304- 实际上就是根据上面的代码自动生成带有持久化的代码,可以在这里可以找到
305-
306- > app/build/generated/source/apt/debug
307-
308- ```
309-
310- public final class SettingsPreferences extends Settings {
311- public static final Map<String, SettingsPreferences> sMap = new java.util.HashMap<>();
312- private final SharedPreferences.Editor mEdit;
313- private final SharedPreferences mPreferences;
314- private final String mName;
315- public SettingsPreferences(String name) {
316- mPreferences = AptPreferencesManager.getContext().getSharedPreferences("Settings_" + name, 0);
317- mEdit = mPreferences.edit();
318- this.mName = name;
319- this.setPush(new PushPreferences());
320- }
321- @Override
322- public Settings.LoginUser getLoginUser() {
323- String text = mPreferences.getString("loginUser", null);
324- Object object = null;
325- if (text != null) {
326- object = AptPreferencesManager.getAptParser().deserialize(com.thejoyrun.aptpreferences.Settings.LoginUser.class, text);
327- }
328- if (object != null) {
329- return (com.thejoyrun.aptpreferences.Settings.LoginUser) object;
330- }
331- return super.getLoginUser();
332- }
333- @Override
334- public void setLoginUser(Settings.LoginUser loginUser) {
335- mEdit.putString("loginUser", AptPreferencesManager.getAptParser().serialize(loginUser)).apply();
336- }
337- @Override
338- public long getLastOpenAppTimeMillis() {
339- return mPreferences.getLong("lastOpenAppTimeMillis", super.getLastOpenAppTimeMillis());
340- }
341- @Override
342- public void setLastOpenAppTimeMillis(long lastOpenAppTimeMillis) {
343- mEdit.putLong("lastOpenAppTimeMillis", lastOpenAppTimeMillis).apply();
344- }
345- @Override
346- public String getUseLanguage() {
347- return mPreferences.getString("useLanguage", super.getUseLanguage());
348- }
349- @Override
350- public void setUseLanguage(String useLanguage) {
351- mEdit.putString("useLanguage", useLanguage).commit();
352- }
353- public static SettingsPreferences get(String name) {
354- if (sMap.containsKey(name)) {
355- return sMap.get(name);
356- }
357- synchronized (sMap) {
358- if (!sMap.containsKey(name)) {
359- SettingsPreferences preferences = new SettingsPreferences(name);
360- sMap.put(name, preferences);
361- }
362- }
363- return sMap.get(name);
364- }
365- public static SettingsPreferences get() {
366- return get("");
367- }
368- public void clear() {
369- mEdit.clear().commit();
370- sMap.remove(mName);
371- }
372- public static void clearAll() {
373- java.util.Set<String> keys = sMap.keySet();
374- for (String key : keys) {
375- sMap.get(key).clear();
376- }
377- }
378- private class PushPreferences extends Settings.Push {
379- @Override
380- public boolean isOpenPush() {
381- return mPreferences.getBoolean("Push.openPush", super.isOpenPush());
382- }
383- @Override
384- public void setOpenPush(boolean openPush) {
385- mEdit.putBoolean("Push.openPush", openPush).apply();
386- }
387- @Override
388- public boolean isVibrate() {
389- return mPreferences.getBoolean("Push.vibrate", super.isVibrate());
390- }
391- @Override
392- public void setVibrate(boolean vibrate) {
393- mEdit.putBoolean("Push.vibrate", vibrate).apply();
394- }
395- @Override
396- public boolean isVoice() {
397- return mPreferences.getBoolean("Push.voice", super.isVoice());
398- }
399- @Override
400- public void setVoice(boolean voice) {
401- mEdit.putBoolean("Push.voice", voice).apply();
402- }
403- }
404- }
405- ```
406-
407196
408197
409198
0 commit comments