问题标签 [android-livedata]

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 回答
3417 浏览

android - Android架构组件LiveData - 如何将broadcastReceivers绑定到生命周期

使用 Android LiveData我希望能够在和回调中取消注册和注册许多BroadcastReceivers 。所以我想做这样的事情:onInactive()onActive()

我在想这可能是一种设计模式来清理代码而不是在onDestroy. 您对以这种方式使用 LiveData 有何看法?这里有一个使用它的例子

0 投票
1 回答
5706 浏览

android - Android 架构组件 liveData 和 room - 最低要求是什么?

我意识到它处于 alpha 阶段,但是我想知道像 liveData 和 room 这样的 android 架构组件是否有任何最低要求?例如 min android api/sdk 等。我看过这里 ,但如果有任何要求,它没有显示给我。我可以假设我可以使用这个权利至少回到 android ICS 吗?

0 投票
1 回答
662 浏览

android - Android架构组件室库——如何处理来自DAO的livedata

我不清楚如何设置从房间中的 dao 返回的实时数据。让我们看一个房间中的示例 DAO:

特别是,我想看看getEvents Query 调用。它将返回 liveData 对象中的事件列表。这是如何从呼叫者端调用的?任何人都有一个可观察/可流动以及普通旧java的例子吗?

0 投票
7 回答
53068 浏览

android - LiveData.getValue() 使用 Room 返回 null

Java POJO 对象

我的查询方法

访问数据库

在下一行,我正在检查sections.getValue()哪个总是给我 null,尽管我在数据库中有数据,后来我得到了onChanged()方法中的值。

但是当我从查询中省略 LiveData 时,我得到了预期的数据。查询方法:

访问数据库:

0 投票
5 回答
36737 浏览

android - 使用 Android LiveData 更新 RecyclerView

有很多示例如何在 LiveData 更改时将新列表推送到适配器。

我正在尝试更新庞大列表中的一行(例如帖子的评论数)。重置整个列表以仅更改一个字段是愚蠢的。

我可以在BindViewHolder 上添加观察者,但我不明白什么时候应该删除观察者

0 投票
2 回答
927 浏览

android - 使用 Android 架构组件 LiveData & ViewModel 时是否需要使用 onSaveInstanceState 和 onRestoreInstanceState?

Android 架构组件提供了LiveDataViewModel类,这些类对生命周期更友好,专为更精简的 Activity/Fragment 而设计。这些类处理跨配置更改的数据存储,但与 Activity 框架 API 相比,我对它们的使用感到困惑。对于保持活动状态是否 仍然必要onSaveInstanceState(Bundle)或有用?onRestoreInstanceState(Bundle)

0 投票
2 回答
1031 浏览

android - 如何处理 onResume - onPause 状态下的 LiveData 项目?

文档说:

如果 LifecycleOwner 的状态为 STARTED 或 RESUMED,则认为 LifecycleOwner 处于活动状态。

但是,如果状态仅为 RESUMED,我希望它处于活动状态怎么办?例如,当用户返回屏幕时显示一些精美的动画。有没有办法只使用 LiveData 来做到这一点?

现在,我正在检查事件发生时的状态,如果状态未恢复,我将缓存它以在 onResume 方法中继续。这感觉不对。

0 投票
7 回答
55959 浏览

android - 如何清除 LiveData 存储值?

根据LiveData 文档

LiveData 类具有以下优点:

...

始终保持最新数据:如果生命周期再次启动(例如活动从后台堆栈返回到启动状态),它会接收最新的位置数据(如果还没有)。

但有时我不需要这个功能。

例如,我在 ViewModel 中有以下 LiveData,在 Activity 中有 Observer:

现在每次旋转后都会出现旧对话框。

有没有办法在处理后清除存储的值,或者它是否完全错误地使用了 LiveData?

0 投票
1 回答
25415 浏览

android - 从前台服务观察 LiveData

我有一个存储库,它保存 LiveData 对象,并通过 ViewModel 由活动和前台服务使用。当我开始从活动中观察时,一切都按预期工作。但是,从服务中观察不会触发观察。这是我使用的代码

任何想法为什么它不起作用并且我没有收到数据?

0 投票
2 回答
12674 浏览

android - Room - LiveData 观察者在数据库更新时不会触发

我试图在下面的代码中找出,为什么一旦我用新数据填充数据库,Room 的 LiveData observable 不会给我新的转变。

这是放在我活动的 onCreate 方法上的:

这是 populateAdapter 方法:

我还有以下填充数据库的代码(我使用 RxJava 在 IO 线程上完成工作,因为 Room 需要在主线程之外调用它的代码):

在我开始观察我的 shiftsViewModel 后调用persistShifts 时出现的问题。我希望我的观察者(LiveData)会被所有新添加的班次触发。事实证明,观察者被触发,但返回的是一个空的班次列表。使其“工作”的唯一方法是我离开活动(因此破坏当前的 ViewModel)并再次进入。这一次,viewModel 的 LiveData 为我提供了之前坚持的所有转变,正如预期的那样。

这是其余的代码:

道:

视图模型:

为什么我没有立即获得在 observe() 回调中坚持的班次列表?