ObjectBox:支持LiveData(Android体系结构组件)
程序员文章站
2022-05-31 09:26:20
objectbox:支持livedata(android体系结构)。
objectbox 1.2.0以后开始支持livedata。
作为objectbox的观察者和rx的备...
objectbox:支持livedata(android体系结构)。
objectbox 1.2.0以后开始支持livedata。
作为objectbox的观察者和rx的备选方案,您可以选择由android architecture components提供的livedata方法。objectbox附带了 objectboxlivedata,这是一个在
viewmodel类中使用的类。
在我们的demo中我们实现了一个简单的viewmodel:
public class noteviewmodel extends viewmodel {
public class noteviewmodel extends viewmodel { private objectboxlivedata notelivedata; public objectboxlivedata getnotelivedata(box notesbox) { if (notelivedata == null) { // query all notes, sorted a-z by their text notelivedata = new objectboxlivedata<(notesbox.query().order(note_.text).build()); } return notelivedata; } }
我们通过传参的方式获取
notesbox,当然你在anroid中也可以使用
((app) getapplication()).getboxstore().boxfor()。
不过,第一种方法的好处是我们的viewmodel没有引用android类。这使得单元测试更容易。
现在,在创建activity或fragment 时,我们得到viewmodel,访问它的livedata并最终注册以观察更改:
noteviewmodel model = viewmodelproviders.of(this).get(noteviewmodel.class); model.getnotelivedata(notesbox).observe(this, new observer>() { @override public void onchanged(@nullable list notes) { notesadapter.setnotes(notes); } });
观察者一旦订阅,objectboxlivedata就会开始查询,并在查询结果发生变化时通知观察者。在此示例中,如果添加或删除注释,则会通知acticity。如果所有观察者被销毁,livedata将取消对查询的订阅。
如果你以前使用过
objectbox observers,这听起来很熟悉。objectboxlivedata只是对dataobserver进行了一层封装而已。
推荐阅读
-
ObjectBox:支持LiveData(Android体系结构组件)
-
集推流和流媒体RTSP服务于一身的同屏功能组件支持Windows,Android平台EasyScreenLive-Win同屏㢟开启屏幕采集失败解决方案
-
Android Jetpack(三)LiveData 组件原理剖析
-
Android架构组件ViewModel和LiveData介绍及使用
-
Windows、Linux、ARM、Android、iOS全平台支持的RTMP推流组件EasyRTMP- iOS进入预览界面系统直接崩溃的原因分析
-
ObjectBox:支持LiveData(Android体系结构组件)
-
Android Jetpack架构组件(四)一文带你了解LiveData(使用篇)
-
Android Jetpack架构组件(五)带你了解LiveData(原理篇)