问题标签 [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 投票
13 回答
55141 浏览

android - LiveData 防止在开始观察时收到最后一个值

LiveData开始观察时是否可以阻止接收最后一个值?我正在考虑LiveData用作事件。

例如显示消息、导航事件或对话触发器等事件,类似于EventBus.

ViewModel与fragment之间的通信有关的问题,谷歌让我们LiveData用数据更新视图,但是这种类型的通信不适合我们只需要用单个事件更新视图一次,而且我们不能保存视图的引用ViewModel并调用一些方法,因为它会造成内存泄漏。

我发现了类似的SingleLiveEvent - 但它仅适用于 1 个观察者,而不适用于多个观察者。

- - 更新 - -

正如@EpicPandaForce所说“没有理由将LiveData用作它不是的东西”,问题的意图可能是MVVM中视图和ViewModel之间的通信与LiveData

0 投票
2 回答
10123 浏览

android - LiveData(MutableLiveData) 和数据绑定上升错误(调用观察者方法失败)

我有一个使用 ViewModel 和 MutableLiveData 将实时数据绑定到我的 UI 的应用程序。几个小时后,我的时间西化了!并查看互联网上的所有样本,我找不到问题的原因。

我的活动:

还有我的模特课:

和布局(我在这里清理了额外的代码):

在运行时和创建活动时,我收到此错误:

java.lang.RuntimeException:无法启动活动ComponentInfo{googlearchitecturecomponents.ferdos.com.dagger211/googlearchitecturecomponents.ferdos.com.dagger211.detail.DetailActivity}:java.lang.RuntimeException:调用观察者方法失败------ - - 堆栈跟踪 - - - - -

请帮我解决这个令人困惑的错误!

0 投票
1 回答
1579 浏览

java - 在 Android Studio 不建议使用 Xml MutableLiveData 中的数据绑定时

当我们在 XML 中使用 ViewModel 中使用 MutableLiveData 时,Android Studio 不提供给我们?

公共用户实体 userEntity1;

在此处输入图像描述

userEntity1 是工作,但 userEntity 不工作。

如何解决这个问题?

更新:

Android Studio 3.4.2 修复了这个错误。

0 投票
1 回答
504 浏览

android - Android房间一次加载多个数据如何知道所有请求都完成了

所以我有Room数据库,我MutableLiveData用来在一个屏幕中从数据库加载four列表这四个列表中的每一个都有单独callbacks 的,在加载数据时调用,我有progress bar我在数据开始加载时显示的,我想progress bar在所有四个列表时隐藏它列表已加载,但问题是回调可能会因为各种延迟而随机触发,所以我有什么选择来确定何时加载所有列表?

0 投票
1 回答
937 浏览

java - 使用 Retrofit/Rxjava 进行数据绑定/实时数据处理配置更改

请看这段代码:

主要活动:

MutableLiveData在xml布局中定义:

<variable name="user" type="android.arch.lifecycle.MutableLiveData&lt;test.databindingtemplate.ViewModels.User&gt;"/>

用户的每个字段都必须通过数据绑定来控制:

这很好用,跟踪配置更改并将其填充到 gui(例如,当我在“名称”字段中键入内容时,屏幕旋转时值仍然存在)。

接下来,我想从 rest webservice - Retrofit/RxJava 实现刷新用户详细信息,并且我想在数据加载过程中显示繁忙指示器,例如,在onCreate方法中:

现在我不确定如何正确处理配置更改 - 当显示繁忙指示器时,应该在屏幕旋转更改后重新创建它。由于MutableLiveData处理配置变化很好,我无法找到任何解决方案(除了“经典”方式)来解决我在这种情况下加载指示器和处理结果的问题。

你能给我指出正确的方向吗?

[编辑] getUserDetails 声明:

@user8035311

我修改了您的 github 示例以触发按钮单击时的模拟数据加载,这种方式(按钮已添加到布局中):

但这不起作用。任务在屏幕旋转时中断,但以下情况除外:

06-27 09:05:18.737 11829-11829/app.rxrotation.com.architecturecomponentsrxrotation E/WindowManager: android.view.WindowLeaked: Activity app.rxrotation.com.architecturecomponentsrxrotation.MainActivity 泄露了原本的窗口 DecorView@5b16e38[]在 android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:346) 在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93) 在 android.app 的 android.view.ViewRootImpl.(ViewRootImpl.java:485) .Dialog.show(Dialog.java:330) at app.rxrotation.com.architecturecomponentsrxrotation.MainActivity.lambda$onCreate$1$MainActivity(MainActivity.java:35) at app.rxrotation.com.architecturecomponentsrxrotation.MainActivity$$Lambda$0。 onClick(Unknown Source:4) at android.view.View.performClick(View.java:6294) 在 android.os.Handler.handleCallback(Handler.java:790) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.view.View$PerformClick.run(View.java:24770) 在android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6494) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal。 os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)main(ActivityThread.java:6494) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 在 com.android.internal。 os.ZygoteInit.main(ZygoteInit.java:807)main(ActivityThread.java:6494) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 在 com.android.internal。 os.ZygoteInit.main(ZygoteInit.java:807)

在我第二次单击按钮后,数据加载甚至没有执行。

0 投票
1 回答
1006 浏览

android - 如何使用 LiveData + Retrofit 在 30 分钟内缓存数据?

我正在遵循使用 LiveData 的 Android 指南:https ://developer.android.com/jetpack/docs/guide ,我可以拨打电话并获取对象列表,但我不明白如何缓存该列表对象,在示例中,我不确定如何定义类 UserCache,而且,我不知道如何添加缓存时间。

你能指点我怎么做吗?

这是课程:

}

谢谢

0 投票
1 回答
1046 浏览

android - 如何使用 livedata 进行多个网络调用?

我正在做一个项目,我正在尝试使用数据绑定来实现 Android 架构组件。我有一个活动、视图模型和存储库,我现在正在创建一个登录页面。我必须创建两个存储库函数以使用户登录,第一个函数将返回 uid,通过传递此 uid,第二个函数将返回详细信息。一切都完成后,我只想将用户重定向到内页。我尝试过 Transformations.switchMap,但它不起作用。请帮忙...

这是我的视图模型

这是我的回购

0 投票
9 回答
82112 浏览

android - MutableLiveData 中 setValue() 和 postValue() 的区别

有两种方法可以改变 的值MutableLiveDatasetValue()但是& postValue()in之间有什么区别MutableLiveData

我找不到相同的文档。

这是MutableLiveDataAndroid的类。

0 投票
1 回答
1088 浏览

android-viewmodel - 从 Room 观察 LiveData 会导致 PagedListAdapter 刷新,ViewModel 也会在方向更改时刷新数据

我正在构建一个应用程序,它使用 ArticleBoundaryCallback 来启动对 API 的调用,并将响应存储在 Room 中。我还在使用 LiveData 收听该表,并在 PagedListAdapter 中显示项目。

问题是每次在 Room 的(Article)表中插入新数据时,整个列表都会刷新。

此外,在配置更改时,似乎再次获取了整个数据(ViewModel 不保留它,RecyclerView 被重新创建)。

在每次插入时,RecyclerView 都会跳转(如果插入了新数据,则跳转几行,或者如果它用旧数据替换新数据,则在开头)。

整个代码在这个GitHub repo中。

我的课程是:

文章:

文章 DAO:

LocalCache(从 Room 存储/检索)

应用程序库

视图模型

活动 - 从 VM 观察

适配器

差异

我真的需要解决这个问题。谢谢!

0 投票
3 回答
396 浏览

android - Why do we need LiveData and ViewModel

I have used LiveData and ViewModel example but i dont understand use of this feature because i can change value directly without use this feature even this is growing number of line in code by using observing code and same as in ViewModel by creating MutableLiveData.

below ViewModel Code public class FirstViewModel extends ViewModel {

Using in Activity