Treasure
是一个Android平台上基于SharePreferences
的偏好存储库,只需要定义接口,无需编写实现。运行时0反射,不仅使用方便而且性能和原生写法几乎无差别。
Gradle
compile 'com.baoyz.treasure:treasure:0.3.1'
provided 'com.baoyz.treasure:treasure-compiler:0.3.1'
@Preferences
public interface SimplePreferences {
String getUsername();
void setUsername(String username);
}
我们定义了一个interface
,需要使用@Preferences
注解进行声明。然后可以定义一系列的get
、set
方法,用于获取和设置值。方法名会作为存储的key
,例如getUsername()
和setUsername()
的key
就是username
,也就是通过setUsername()
设置的value
可以通过getUsername()
获取到,因为他们的key
是一样的。
SimplePreferences preferences = Treasure.get(context, SimplePreferences.class);
preferences.setUsername("Hello Treasure!");
preferences.getUsername(); // return "Hello Treasure!"
通过Treasure.get()
方法可以获取指定的Preferences
对象,之后可以调用set
方法设置值,通过对应的get
方法获取值。
可以为一个Preferences
生成多个文件,例如多账号管理,不同账号有不同Preferences
。
Treasure.get(context, SimplePreferences.class, "id_one");
Treasure.get(context, SimplePreferences.class, "id_two");
Treasure
提供了一个重载的get
方法,可以传入一个String
类型的ID,不同ID返回的Preferences
对象不同,保存的文件也不同。(感谢好基友zzz40500提出的建议)
@Default
注解可以指定get
方法的默认值。
@Default("Hello Treasure!")
String getUsername();
@Default("false")
boolean isLogin();
// default is 1 hour
@Default("1000 * 60 * 60")
long getTimeout();
@Default({"hello", "world", "!"})
Set<String> getStringSet();
如果没有指定@Default
那么默认值见下表。
返回值类型 | 默认值 |
---|---|
int | 0 |
float | 0f |
long | 0l |
boolean | false |
String | null |
Set<String> | null |
设置值的默认提交类型是edit().apply()
,如果想使用edit().commit()
有三种方式。
@Preferences(edit = Preferences.Edit.COMMIT)
public interface SimplePreferences
全局指定提交方式之后,所有的set
方法都会以commit()
方法提交数据。
@Commit
void setUsername(String username);
使用@Commit
注解只对当前方法有效。
boolean
boolean setUsername(String username);
无论上面两种方式有没有设置,只要set
方法的返回值是boolean
,那么这个方法就会以commit()
方法提交,并且返回commit()
的结果。
@Remove
void removeUsername();
@Remove
void deleteTimeout();
使用@Remove
注解修饰方法,调用方法移除对应key
的数据。
@Clear
void clear();
可以声明一个方法,使用@Clear
注解修饰,那么调用这个方法就会清空整个Preferences
的数据。
如果方法名以get
、set
、put
、is
、remove
、delete
开头,那么会忽略这些前缀并且全部小写作为key
,如果不包含这些前缀,那么方法名全部小写会作为key
。
Treasure
运行时0反射,不需要添加Proguard
配置。
Favor(灵感来源)
The MIT License (MIT)
Copyright (c) 2015 baoyongzhang <baoyz94@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。