什么是EasyBundle
EasyBundle是开源基础组件集成库EasyAndroid中的基础组件之一。其作用是:优雅的进行Bundle数据存取
EasyAndroid作为一款集成组件库,此库中所集成的组件,均包含以下特点,你可以放心使用~~
1. 设计独立
组件间独立存在,不相互依赖,且若只需要集成库中的部分组件。也可以很方便的
只copy对应的组件文件
进行使用
2. 设计轻巧
因为是组件集成库,所以要求每个组件的设计尽量精练、轻巧。避免因为一个小功能而引入大量无用代码.
每个组件的方法数均
不超过100
. 大部分组件甚至不超过50
。
得益于编码时的高内聚性
,若你只需要使用EasyBundle. 那么可以直接去copy EasyBundle源码文件到你的项目中,直接进行使用,也是没问题的。
特性
- 统一存取api
- 支持存储任意类型数据,打破Bundle数据限制
- 自动类型转换。读取随心
- Bundle与实体类之间的双向数据注入
用法
用法概览
我们先来与原生
使用方式进行一下对比
。以便让大家能对EasyBundle
的用法有个大概的概念
假设我们有以下一批数据,需要进行存储
类型 | 值 |
---|---|
Int | age |
String | name |
- 原生存储:需要根据存储类型不同选择不同的api
val bundle = getBundle()
bundle.putInt("age", age)
bundle.putString("name", name)
- 使用EasyBundle进行存储:统一存储api。直接存储
val bundle:Bundle = EasyBundle.create(getBundle())
.put("age", age)
.put("name", name)
.getBundle()
- 原生读取:需要根据容器中的
不同类型
, 选择不同api
进行读取
val bundle = getBundle()
val age:Int = bundle.getInt("age")
val name:String = bundle.getString("name")
- 使用EasyBundle进行读取:统一读取api。直接读取
val easyBundle = EasyBundle.create(getBundle())
val age = easyBundle.get<Int>("age")
val name = easyBundle.get<String>("name")
- 原生方式页面取值
class ExampleActivity:Activity() {
var age:Int = 0
var name:String = ""
override fun onCreate(saveInstanceState:Bundle?) {
super.onCreate(saveInstanceState)
intent?.let{
age = it.getIntExtra("age", 0)
name = it.getStringExtra("name")
}
}
}
- 使用EasyBundle进行页面取值
class BaseActivity() {
override fun onCreate(saveInstanceState:Bundle?) {
super.onCreate(saveInstanceState)
// 在基类中直接配置注入入口,将intent中的数据注入到配置了BundleField注解的变量中去
EasyBundle.toEntity(this, intent?.extras)
}
}
class ExampleActivity:BaseActivity() {
// 在对应的字段上添加BundleField即可
@BundleField
var age:Int = 0
@BundleField
var name:String = ""
...
}
- 原生方式进行现场保护
class ExampleActivity:Activity() {
var age:Int = 0
var name:String = ""
// 原生方式。需要手动一个个的进行数据存储
override fun onSaveInstanceState(outState: Bundle?) {
super.onSaveInstanceState(outState)
outState?.let{
it.putInt("age", age)
it.putString(