如不雅是像这种实现,UI 须要先大年夜之前的 LiveData 刊出并且在每次调用 getPostalCode() 时从新注册到新的实例。此外,如不雅 UI 被从新创建,它将会触发新的 repository.getPostCode() 调用,而不是应用之前的调用结不雅。
不克不及应用那种方法,而应当实现将地址输入转换为邮政编码信息。
- class MyViewModel extends ViewModel {
- private final PostalCodeRepository repository;
- private final MutableLiveData<String> addressInput = new MutableLiveData();
- public final LiveData<String> postalCode =
- Transformations.switchMap(addressInput, (address) -> {
- return repository.getPostCode(address);
- });
- public MyViewModel(PostalCodeRepository repository) {
- this.repository = repository
- }
- private void setInput(String address) {
- addressInput.setValue(address);
- }
- }
请留意,我们甚至使 postalCode 字段为 public final,因为它永远不会改变。postalCode 被定义为 addressInput 的转换,所以当 addressInput 改变时,如不雅有处于晃荡状况的不雅察者,repository.getPostCode() 将会被调用。如不雅在调用时没有处于晃荡状况的不雅察者,在添加不雅察者之前不会进行任何运算。
创建新的转换
在应用法度榜样中可能会用到十几种不合的特定转换,然则默认是不供给的。可以应用 MediatorLiveData 实现本身的转换,MediatorLiveData 是为了用来精确的监听其它 LiveData 实例并处理它们发出的事宜而特别创建的。MediatorLiveData 须要特别留意精确的向源 LiveData 传递其处于晃荡/闲置状况。有关具体信息,请参阅 Transformations 类。
【编辑推荐】
- Android软键盘控制办法、以及开辟中碰到的一些问题。
- 总结Android模块化的一些常识点。
- 深刻懂得Android Instant Run运行机制
- Android APK反编译就这么简单详解(图文详解)
- Android Webview应用和碰到过的坑总结
推荐阅读
这些马脚让进击者可破解口令获取Windows凭证。Preempt合营开创人兼CEO阿基特·桑切蒂称:“威逼态势持续成长,凸显出现有安然协定中存在的马脚,这2个马脚也没什么不合。NTLM让公司企业和>>>详细阅读
本文标题:谷歌官方Android应用架构库——LiveData
地址:http://www.17bianji.com/lsqh/36284.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示