EasyBundle: 最佳Bundle存取实践

什么是EasyBundle

EasyBundle是开源基础组件集成库EasyAndroid中的基础组件之一。其作用是:优雅的进行Bundle数据存取

EasyAndroid作为一款集成组件库,此库中所集成的组件,均包含以下特点,你可以放心使用~~

1. 设计独立

组件间独立存在,不相互依赖,且若只需要集成库中的部分组件。也可以很方便的只copy对应的组件文件进行使用

2. 设计轻巧

因为是组件集成库,所以要求每个组件的设计尽量精练、轻巧。避免因为一个小功能而引入大量无用代码.

每个组件的方法数均不超过100. 大部分组件甚至不超过50

得益于编码时的高内聚性,若你只需要使用EasyBundle. 那么可以直接去copy EasyBundle源码文件到你的项目中,直接进行使用,也是没问题的。

特性

  1. 统一存取api
  2. 支持存储任意类型数据,打破Bundle数据限制
  3. 自动类型转换。读取随心
  4. 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(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值