草庐IT

LiveData_LifecycleBoundObserver_L

全部标签

android - 是否可以强制 LiveData 值的不可空性?

有什么方法可以强制LiveData值的不可空性?默认的Observer实现似乎有@Nullable注释,它强制IDE提示该值可能为null并且应该手动检查:publicinterfaceObserver{/***Calledwhenthedataischanged.*@paramtThenewdata*/voidonChanged(@NullableTt);} 最佳答案 如果您使用Kotlin,则可以使用一个新选项。您可以将LiveData替换为StateFlow.它更适合Kotlin代码并提供内置的null安全性。而不是使用:cl

android - Viewmodel 观察 LiveData - 如何?

在Lifecycle和LiveData之前,Viewmodel可以很容易地观察到它自己的可观察对象的变化。只需订阅Observable*的更改并对它们使用react即可。然后可能会使用双向绑定(bind)来立即对用户的输入使用react。在AndroidStudioCanary中,现在允许绑定(bind)到LiveData对象,前提是Binding知道其所有者的生命周期(ViewBinding现在有额外的setLifecycle方法),AndroidStudioCanaryinformation:YoucannowuseaLiveDataobjectasanobservablefiel

android - 如何从 LiveData 获取值?

我是第一次使用Room。我正在查看LiveData概念。我知道我们可以将记录从数据库中提取到LiveData中并附加观察者。@Query("SELECT*FROMusers")>getAll();但我在后台执行同步,我需要从服务器获取数据并将其与名为“用户”的RoomDatabase表中的数据进行比较,然后从用户表中插入、更新或删除。在采取任何行动之前如何遍历LiveData列表?因为如果我把它放在for循环中它会出错。或者我不应该在这种情况下使用LiveData吗?我想我需要打电话>getAll().getValue()但这样做正确吗?这里有更多代码可以让我了解我正在尝试做什么:Li

android - 为什么 LiveData 还要通知处于 onPause 状态的 Activity?

我在Activity中有以下代码@OverridepublicvoidonPause(){super.onPause();if(isFinishing()){finalLiveDatastickyNoteConfigLiveData=StickyNoteConfigRepository.INSTANCE.getStickyNoteConfig(mAppWidgetId);stickyNoteConfigLiveData.removeObservers(this);stickyNoteConfigLiveData.observe(this,stickyNoteConfig->{//Wei

android - 我可以将 ViewModel 传递给 RecyclerView Adapter 并观察 LiveData 吗?

我开始实现MVVM,我不知道在我的Adapter中使用ViewModel是好的做法还是反模式.举个例子,考虑一个颜色列表和一个您将更改背景的图像。在这种情况下,我会观察所选颜色并绑定(bind)背景颜色以显示在UI中。但我在两个地方观察colorSelected:在Fragment中为了改变背景颜色在Adapter中显示选择了哪种颜色那么,当我将ViewModel传递并观察到​​Adapter时,我是否正确使用了MVVM? 最佳答案 我现在不确定它是否是一个好的模式,但是有一个问题:通过这种方式,您的适配器与您的ViewModel绑

android livedata进行顺序调用

我正在使用Retrofit,实时数据。我的项目有一种情况,我必须进行网络调用的顺序。如果任何一个失败,它应该返回错误。目前我有两个实时数据观察员来完成工作,这不是一个好方法,所以我想知道更好的方法或示例代码来处理这种需求。注意:我没有使用Rxjava。查看代码基本逻辑Stringid="items/1233";//IDwhichhastotobedeletedif(isCustomizedItem){viewModel.deleteEvent(id);}else{viewModel.createCustomItems();viewModel.deleteEvent(id);}实时数据观

android - ObservableField 还是 LiveData?哪一个是最好的?

我一直在测试Livedata和AAC。LiveData和ObservableField的核心区别是什么?哪个最好,我什么时候应该使用一个而不是另一个? 最佳答案 核心区别在于ObservableField不是生命周期感知的,因此不能有任何自动订阅管理。同时LiveData当涉及到Activity/Fragment时,它具有生命周期意识并通过订阅管理解决了大量令人头疼的问题生命周期。没有一种方法可以回答什么是最好的。这是个人选择,但我建议使用LiveData只是为了节省一些时间并避免将来出现潜在问题。

android - 从前台服务观察 LiveData

我有一个存储库,其中包含LiveData对象并被两者使用通过ViewModel的Activity和前台服务。当我开始从Activity中观察时,一切都按预期进行。但是,从服务中观察不会触发Observe。这是我使用的代码classMyService:LifecycleService(){lateinitvarviewModel:PlayerServiceViewModeloverridefunonCreate(){viewModel=MyViewModel(applicationContextasApplication)}overridefunonStartCommand(intent

android - 将 LiveData<PagedList<X>> 映射到 LiveData<PagedList<Y>>

我需要将域对象映射到UI对象并使用实时分页列表显示。我试图映射LiveData>至LiveData>和mapPositionalDataSource至PositionalDataSource,但由于包私有(private)和私有(private)限制,如果不将我的代码放在android.arch.paging包中并使用反射,或者使用分页库的修改版本,这两者似乎都是不可能的。有谁知道有什么方法可以做到这一点而无需诉诸这种不受欢迎的方法吗?(请注意,如果分页库API使用接口(interface)而不是抽象基类,这将不是问题-这将允许包装任何分页列表/数据源并添加适当的映射。)

android - 如何在后台线程上执行 LiveData 转换?

我需要转换一种类型的数据,由LiveData返回对象在后台线程中转化为另一种形式,以防止UI滞后。在我的具体情况下,我有:MyDBRow对象(由原始long和String组成的POJO);一个RoomDAO通过LiveData>发射这些的实例;和一个期待更丰富的UIMyRichObject对象(带有基元的POJO膨胀成例如date/timeobjects)所以我需要转换我的LiveData>进入LiveData>,但不在UI线程上。Transformations.map(LiveData,Function)方法执行此所需的转换,但我不能使用它,因为它在主线程上执行转换:Appliest