Wil*_*nda 5 android mvvm android-livedata
亲们。我曾经使用 MVP 模式开发 Android 应用程序,现在我正在尝试使用 DataBind 和 LiveData 等架构组件的 MVVM。
我编写了提供 LiveData 的 Repository 类:
LiveData<MyEntity> getById(long id);
Run Code Online (Sandbox Code Playgroud)
对于活动/片段,我观察到 ViewModel 公开的 LiveData(使用我的存储库)并且一切正常。
问题是我必须安排一个警报来显示一个带有与 MyEntity 相关的文本的通知,所以我创建了一个包含我的 MyEntityId 作为 Extra 的 Intent。
当 AlarmManager 调用我的 BroadcastReceiver 时,我需要使用 Repository 来获取 MyEntity。关键是如何“观察”非 UI 组件内的 LiveData。
此外,我可以启动一个 IntentService(后台线程)以避免访问主线程中的存储库,并使用 RxJava 中的“blockingNext”之类的东西,但我仍然无法找到等待 LiveData 的方法。
这样做的正确方法是什么?请注意,由于遗留问题,我的存储库可能无法使用 Room 实现。
谢谢
到目前为止,我想到的唯一解决方案是在存储库中有这样的方法:
LiveData<MyEntity> getByIdLive(long id);
MyEntity getById(long id);
Run Code Online (Sandbox Code Playgroud)
但这对我来说看起来并不好。所以我想问一下如何实现这一点的正确方法。
此致
您只能在 Activity/Fragment 等 UI 组件中观察 liveData。
对于您的场景,您可以创建一个观察者类,该类也可以在非 UI 类中观察,或者您可以使用 EventBus。
了解观察者: https: //developer.android.com/reference/java/util/Observer
关于EventBus: https: //github.com/greenrobot/EventBus
| 归档时间: |
|
| 查看次数: |
3998 次 |
| 最近记录: |