BundleFactory - JumeiRdGroup/Parceler GitHub Wiki
使用BundleFactory做数据注入
Parceler提供BundleFactory类做数据双向存取功能。可通过以下api进行获取:
// 此处传入Bundle对象。以供对数据进行注入操作
BundleFactory factory = Parceler.createFactory(bundle);
...
// 在操作完成之后。使用getBundle()方法获取操作后的Bundle实例。
Bundle bundle = factory.getBundle();
- 指定使用的数据转换器:数据转换器说明
// 当设置为null时。则表示将会使用设置的默认转换器。
factory.setConverter(converter);
- 指定是否强制转换:
// 指定是否强制要求后续通过
factory.setForceConvert(isForce)
然后即可进行对应操作。
- 添加任意对象数据到Bundle:
factory.put(key, value)
- 从Bundle中获取出任意对象数据:
factory.get(key, type);
指定转换器的意义在于:
-
get(key, type):
当使用get方法从bundle中取数据时。当从bundle中通过指定key取出值的类型,与指定的type类型不一致时。触发转换器converter进行数据转换。转换为指定的type类型并赋值。
-
put(key, value)
当使用put方法将数据存入bundle中时。当需要放入bundle中的值value的类型不被bundle所支持时,触发转换器converter进行数据转换,转换为指定的可被bundle所支持的数据类型并放入bundle中。
使用说明
// 存入数据
Bundle source = Parceler.createFactory(new Bundle())
// 指定使用FastJson作为转换器
.setConverter(FastJsonConverter.class)
// 指定是否忽略在存取过程中所出现的异常。忽略即为遇到问题时自动跳过。不会导致crash。推荐使用BuildConfig.DEBUG作为开关
.ignoreException(ignore)
// 使用put存入任意对象。当value数据类型不能被直接被放入Bundle中时。触发设置的converter进行转换后存入
.put(key, value)
// 设置强制转换
.setForceConvert(true)
// 由于设置了强制转换。则此处设置的value。若类型为非基本数据类型时。则将直接触发强制转换。将value通过converter直接先转换后存入
.put(key, value)
// 获取存入所有数据的Bundle实例
.getBundle();
// 读取数据
// 取出传递过来的Bundle数据
Bundle bundle = getBundle();
// 创建Factory。并配置参数
BundleFactory factory = Parceler.createFactory(bundle)
.ignoreException(BuildConfig.DEBUG);
// 通过Factory从Bundle中读取数据。
A a = factory.get(key, A.class);