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

android - Room 推迟交易中的 LiveData 事件

我在我的应用程序中使用 Room 数据库作为主要数据源。目前我遇到了一个问题。我的应用程序中有这个流程:

  1. 显示数据库中的数据
  2. 从后端获取新数据
  3. 从数据库中删除旧数据
  4. 在数据库中插入新数据

问题出在第 3 步和第 4 步。UI 中显示的所有数据都由 LiveData 对象支持,因此当我从 db 中删除旧数据时,LiveData 对象会通知 UI db 为空,并且我的 UI 短暂变为空。一旦插入新数据,UI 就会被新数据填充。最初,我认为在一个事务中放置删除和插入操作会告诉房间“推迟”通知,直到setTransactionSuccessful()调用方法。然而,它并不能解决问题。

有谁知道如何实现所需的行为?(取消订阅 LiveData 对象除外)。

0 投票
5 回答
35327 浏览

android - MVVM 中的 MediatorLiveData 和 MutableLiveData 有什么区别

我进行了很多搜索,但没有找到问题的清晰答案:

  1. MediatorLiveData 和 MutableLiveData 有什么区别?

  2. 使用它们中的任何一个的合适条件是什么。

0 投票
1 回答
25437 浏览

android - 在房间中通过 id 获取项目

我在我的 Android 项目中使用 Room + LiveData。按照 Google Blueprints,我已经实现了我的应用程序的数据层。

这就是我的道的样子:

我从我的 EventRepository 中调用它:

NetworkManager 类在哪里(已从此处“获取” ):

在我希望在 ViewModel 中获得我的 LiveData 之后:

问题。 我以相同的方式获取事件列表(它有效!)我已经在上面描述过,但是对于单个事件(此事件已经在数据库中)它不起作用。我发现 localSource.value 为空(在NetworkManager中)。也许我的查询不好或.. 别的什么。

0 投票
3 回答
1687 浏览

android - 使用 Dagger、Room 和 LiveData 时调试 DataBinding 错误

在我的 Android 项目中,我使用 Android Studio 3.0-beta6,retrofit2 用于休息调用,Room 用于持久性,LiveData 用于使用 RxJava / RxAndroid 进行反应式编程。有几个 annotationProcessors 正在使用:

  1. android.arch.lifecycle:编译器
  2. android.arch.persistence.room:编译器
  3. com.google.dagger:dagger 编译器
  4. com.google.dagger:dagger-android-processor
  5. org.projectlombok:lombok

每次我添加一个新的 Retrofit2 服务、带有 Room 注释的模型类、Room Dao 类时,我发现我遇到了数据绑定生成错误:

Error:(3, 27) error: cannot find symbol class DataBindingComponent

发出了大量“找不到符号”错误,但我的问题的根本原因通常没有发出。调试根本原因需要大量时间,因为错误报告似乎很弱。

在被烧了几次之后,我用一些策略来隔离这种情况下的问题:

  1. 搁置我的更改并以小增量引入更改,并在吹走我的应用程序的构建和架构输出文件夹后进行干净的重建。通常这意味着首先引入模型类更改。接下来介绍 Room 所需的 Jackson 转换器,以便在我的 Room Entity 模型类中保留非原始类型。最后介绍 Dao 类和 Room Database 子类。
  2. 检查实体类以确保它们具有@PrimaryKey、@Entity、@TypeConverters Room 注释。确保 TypeConverter 类指定转换器类 FooConverter 而不是正在转换的类 Foo
  3. 检查 Dao 类以确保 @Query 注释中的表名中没有复制粘贴错误

然而,有时我仍然遇到数据组合生成错误并且根本原因未知。

我想知道是否有任何好的技术可以在这种情况下隔离根本原因。有没有办法在注释处理器(特别是 Room)中打开调试日志记录。

TIA 对此提供任何指导。我怀疑很多人都面临这种情况。

0 投票
1 回答
229 浏览

android - 可见性的片段生命周期已更改

在我的应用程序中,我有两个片段,其中一个 (FragmentSlidingUp) 可以向上滑动并完全覆盖另一个 (FragmentContent)。我使用这个库来向上滑动https://github.com/umano/AndroidSlidingUpPanel。我遇到的问题是,当 FragmentSlidingUp 向上滑动并且 FragmentContent 不可见时,FragmentContent 中的 LiveData 观察者没有暂停。有没有办法在片段不可见时将片段生命周期状态设置为暂停,以便当片段再次可见时 LiveData 观察者将自动暂停和恢复?谢谢。

0 投票
1 回答
3546 浏览

java - 多次调用 MVVM MediatorLiveData 观察者 onchanged

我在我的应用程序上使用 MVVM + LiveData + Dagger 2.11。在 SignInFragment 上单击 textview 向服务器发送请求并在快餐栏上显示响应。它在第一次单击 textview 时工作正常。如果我再次单击,它会发送请求(在此之间显示小吃店响应消息)和 ViewModel MediatorLiveData 观察者 onChanged 方法称为多次。它是 MediatorLiveData 的默认行为吗?

SignInViewModel.java

SignInFragment.java

0 投票
2 回答
8978 浏览

android - 实时数据被多次调用?

Android Architecture Components在我的应用程序中使用。在我的登录活动中,登录失败时我会显示一个对话框!

由于实时数据,该对话框已显示 3 次以上。我添加了一些日志并发现它livedata被多次调用。

我该如何解决这个问题?

活动

视图模型

LOGCAT

更新

使用 SingleLiveEvent 之后。它没有被观察到。你能告诉我代码有什么问题吗?

更新的视图模型

0 投票
2 回答
1040 浏览

android - LiveData 'dispatchingValue' 方法中的致命异常:没有虚拟方法 iteratorWithAdditions()

我有一个带有 viewModel 的视图,它可以观察我的 LiveData。我从存储库(从 Room 或 WebAPI 获取数据)获取数据。我已经实现了一个 NetworkBoundResource 抽象类,因此我可以以更简洁的方式管理数据加载。此类中使用了 MediatorLiveData 对象:

崩溃发生在我的构造函数的第一行:

这是错误消息:

第一次在这里提问,希望我提供了足够的信息!提前致谢!

0 投票
2 回答
1125 浏览

android - Android架构组件如何结合来自数据库和网络的LiveData?

NetworkBoundResource中提供了一个示例,但是当我尝试它时,如果数据库返回结果,它就不再从网络获取。我想要的是同时显示来自数据库的数据并触发网络,并最终在网络完成后替换数据库中的数据。示例代码将不胜感激。

0 投票
1 回答
2775 浏览

android - 无休止滚动时,Android分页库何时请求更多项目

如何知道何时使用新的 android Paging Library of Architecture Components向服务器请求更多项目?例如,如果我想实现从服务器加载数据的无限滚动,我如何知道何时必须请求更多项目。