问题标签 [android-viewmodel]

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 投票
8 回答
91256 浏览

android - 从 ViewModel 观察 LiveData

我有一个单独的类,我在其中处理数据获取(特别是 Firebase),我通常从中返回 LiveData 对象并异步更新它们。现在我想将返回的数据存储在 ViewModel 中,但问题是为了获得所述值,我需要观察从我的数据获取类返回的 LiveData 对象。观察方法需要一个 LifecycleOwner 对象作为第一个参数,但我的 ViewModel 中显然没有它,我知道我不应该在 ViewModel 中保留对 Activity/Fragment 的引用。我应该怎么办?

0 投票
3 回答
6023 浏览

android - AndroidViewModel - 进行重复调用不会在观察函数中返回数据

我的问题与ViewModel 第二次返回 nullobserve有关,如果我重复调用服务器,我不会在函数中获得回调。以下是我正在使用的代码 -

在 Activity 中,ViewModel 定义如下 -

observeViewModel函数用于添加 observable on ViewModel

在上面的函数中取消注释以下行允许回调每次都来,但必须有一个正确的方法来做到这一点。

请注意:- 我不需要 RxJava 实现来实现它。

0 投票
0 回答
288 浏览

android - ViewModel 类中的依赖注入

因此,我一直在阅读有关 AndroidViewModel类和应用程序架构指南的内容,我发现视图模型是通过以下方式获得的:

您不直接实例化该类,而是使用ViewModelProviders该类。

到目前为止,一切都很好。然后,该指南显示了如何“连接”UserProfileViewModel与存储库UserRepository

正如上面的评论所说,UserRepository由 Dagger 注入(@Inject构造函数中的注释)。

如果我们不使用 Dagger 2 怎么办?如何在视图模型类中注入依赖项?

0 投票
3 回答
8556 浏览

android - 具有多个参数的 LiveData Transformations.map()

我在 UI 中有一个值,它的值取决于两个LiveData对象。想象一个需要 asubtotal = sum of all items price和 a的商店total = subtotal + shipment price。使用转换,我们可以对小计 LiveData 对象执行以下操作(因为它仅依赖于itemsLiveData):

在总数的情况下,能够做这样的事情会很棒:

但是,不幸的是,这是不可能的,因为我们不能在 map 函数中放置多个参数。任何人都知道实现这一目标的好方法吗?

0 投票
1 回答
489 浏览

android - ViewModel 长时间没有清空

我有一项服务应该在主要活动被破坏后继续工作一段时间(2 分钟)

在我在 Activity.onStop 中取消绑定服务之前,但现在我将代码移动到 ViewModel(以使我的生活更轻松)并注意到即使我切换到其他应用程序也不会调用 MainActivity onDestroy。

只要 MainActivity 没有被销毁,MainViewModel 就会在后台运行很长一段时间。

其他活动没有这样的问题,当我点击背部时它们会被破坏。

有没有办法让操作系统更频繁地杀死主要活动?

0 投票
2 回答
4970 浏览

android - 如何使用新的架构组件跟踪 android 中的当前位置?

我有一个项目,我已经成功实现了位置跟踪功能,并且运行良好。我每 30 秒使用融合位置提供程序跟踪用户当前位置。(跟踪在 MainActivity 开始时开始)。

现在我打算用新引入的 android 架构组件来更新那个项目。但我不知道如何使用视图模型实现位置跟踪。在MainActivity 或 Application类中开始位置跟踪的正确位置在哪里?我应该使用ViewModel 还是 AndroidViewModel?如何实现这一点。

0 投票
0 回答
127 浏览

android - 如何将 AAC ViewModel 与本机活动/片段一起使用?

看起来 ViewModelProviders.of() 需要 FragmentActicity 或 support.v4。要传入的片段。在我的情况下,我有一个库,它提供从应用程序活动扩展的活动,所以我不能使用支持一个。虽然 AAC 不稳定,但我们需要实现 LifecycleOwner,现在有类似的东西吗?任何想法都会非常有帮助:)

0 投票
6 回答
10516 浏览

android - ViewModel 不能在 Activity 中实例化

我正在尝试实例化一个 ViewModel 以在我的所有活动中使用。

control = ViewModelProviders.of(this) <--但我在声明它无法解析时遇到错误of(this),但基于 Android Developer on Implementing ViewModel 的示例;扩展 ViewModel 的类应该能够在 Activity 上实例化,对吗?

如果我做错了,我应该如何为我的 Activity 实例化一个 ViewModel 对象?我是否必须n使用 Fragment 创建多个 Activity,因为ViewModelProviders.of()仅适用于 Fragment?

0 投票
0 回答
1615 浏览

android - 当数据未更改时,Android ViewModel/MutableLiveData onChanged 在新片段中被调用

我遇到了 Android Mutable Live Data 的问题,这可能是因为我的理解不足。场景是我的 Android 选项卡中有 3 个列表。

在我的活动中,我打开了我的第一个片段。在这我称之为

public void openSort(SortType sortType)

到目前为止一切正常。然后我继续打开另一个包含第二个片段的选项卡。这第二个片段在它的

由于某种原因,第二个片段的 onChanged 也会被调用。我的假设是 onChanged 方法仅在视图模型中的数据更改时被调用,但似乎数据由 LiveData 存储并且再次通知观察者。

我们可以做些什么,以便在可变实时数据发生更改时“仅”通知片段?

0 投票
0 回答
529 浏览

java - 如何使用房间数据库中的参数调用 LivePagedListProvider

接口松到{

}

类 SongViewModel(app: Application) : AndroidViewModel(app) {

}

我想在我的 AndroidViewModel 中调用 getAllSong 函数

我想用传递的实际参数替换“1989 taylor swift”,以及它是如何传递给它的