问题标签 [mutablelivedata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3236 浏览

android - android:mutablelivedata 更改不会更新 UI

我正在使用 MutableLiveData 来存储用户所做的选择。该值是从另一个活动设置的。所以 onResume 我正在打电话

但这不会更新 UI,除非我调用 invalidateall()。

这是 MutableLiveData 的预期行为吗

0 投票
3 回答
12220 浏览

android - SingleLiveEvent 实际上是 Android 架构组件库的一部分吗?

我一直在使用SingleLiveData可以在这里找到的课程。我的问题是:

  1. SingleLiveData实际上是Android架构组件的一部分吗?

  2. 使用它是个好主意吗?

0 投票
1 回答
542 浏览

java - 为什么在进行数据更改之前调用 LiveData onChanged?

语境

用来MutableLiveData保存一个值。Button点击应该增加值。

问题

MutableLiveData's似乎在用于更改值Observer.onChanged()之前被调用。MutableLiveData.setValue()

例如,在Button点击之前,onChanged日志发生在设置初始值之后(onChanged纳秒大于新值纳秒)。但是,Button单击后,onChanged日志会在设置新值之前发生(onChanged纳秒小于新值纳秒)。为什么会发生这种情况?:

Button单击之前(onChanged设置初始值后预计会发生日志):

单击按钮后(在设置新 val 之前意外onChanged发生日志):

代码

0 投票
1 回答
591 浏览

android - 如果网络请求失败,LiveData 不会触发两次

LiveData当我的 httprequest 成功时,我的对象被调用了两次,但如果发生错误,它只被调用一次,导致 UI 显示一个空列表,因为我的验证Error被跳过,因为没有触发警报。

我的存储库代码

我的 BaseRepository 代码

我的片段代码

最后,我的 ViewModel 代码

总而言之,在失败的情况下,为什么observer callbackonly 会被调用一次?因为我已经对其进行了调试,并且在两种情况下(成功和失败),该方法asLiveData都称为 TWICE,但只有在成功的尝试中回调也被称为 TWICE,失败时observer callback它仅称为 ONCE。

编辑:添加了异步任务代码

0 投票
2 回答
2989 浏览

java - 为什么在 LiveData 列表中更改值时不调用 onChanged?

语境

用于MutableLiveData<List<Integer>>保存值。当 中的第一个值(为简洁起见,以第一个值为例)List递增时,TextView应更新onChanged以显示 中的第一个值List

目标

  • 增加 a 中的第一个值List
  • TextView当第一项List更改时更新

问题

  1. 点击Button时,第一个值List增加但MutableLiveData.onChanged()没有被调用,这是为什么呢?
  2. 是否MutableLiveData只响应它的setValue方法?
  3. 这可以通过List包含MutableLiveData整数来解决吗(即,MutableLiveData<List<MutableLiveData<Integer>>有问题,因为需要监听器中的每个项目List)?
  4. 有没有更好的方法来实现目标?

代码

0 投票
1 回答
1748 浏览

android - 在 Android 中向 LiveData 传递值

我是开发新手,我知道堆栈不适用于“完整代码请求”。但我被卡住了,找不到解决方案。

我正在使用Room具有两列的数据库 -firstNamelastName. 我正在使用传递的firstName参数加载数据库:

它按预期工作。

但是..当我想更新Passenger时,我需要一次又一次地填充数据。来了LiveDataobserver

但是.. setValueinLiveData是私有的,我不能为查询行发送任何参数。有 MutableLiveData,但我该如何实现呢?

0 投票
1 回答
56 浏览

android-livedata - Android LiveData:无法接收 Observable 的更新?

我正在使用 android Architecture Component LiveData 使用 Observable LiveData 通知 UI,但它没有被触发。下面是代码片段。

授权库

登录视图模型

登录片段

上面的代码无法观察 _showOtpScreen 它只被调用一次,值为空,并且在服务调用完成后不再被调用。

0 投票
1 回答
14807 浏览

android - LiveData、MutableLiveData 之间的区别

我知道MutableLiveDataextends LiveData,但是它们之间有什么区别(在使用中)。什么是适当的用例,意味着何时使用两者中的正确一个?

0 投票
1 回答
3822 浏览

android - 如何观察数据库的变化以更新 LiveData

我正在将应用程序从LoaderManagerwith迁移Callbacks到使用ViewModeland的实现LiveData。我想继续使用现有的SQLiteDatabase.

主要实现工作正常。Activity实例化ViewModel并创建一个Observer更新 的,如果View它观察到 中的MutableLiveData变化ViewModel。通过使用. ViewModel_SQLiteDatabaseContentProvider

但是我有其他可以对数据库进行更改的活动,虽然MainActivity被停止但没有被破坏。还有一个后台服务可以MainActivity在前台更改数据库。

其他活动和后台服务可以更改数据库中的值,因此会对MutableLiveData.ViewModel

我的问题是:如何观察变化SQLiteDatabase以便更新LiveData

这是一个简化版本MainActivity

这是我的ViewModel

0 投票
1 回答
1664 浏览

android - 在 Kotlin 中未触发 LiveData 观察者

我在我的项目中使用 LiveData 和 Kotlin。

我一直面临一个间歇性问题,其中附加到 MutableLiveData 对象的观察者有时不会被触发。

观察者附加在活动 onCreate() 中,(活动作为生命周期所有者)在 ViewModel 中的 LiveData 对象上。

ViewModel 实例化:

设置观察者:

LiveData 对象正在 ViewModel 类的构造函数中初始化。

请注意,这是一个间歇性问题,并非每次都发生,即超过一半的时间完全按预期工作。

有什么我做错了吗?您可以推荐此实现的更好做法吗?