如何将WearableActivity用于LiveData和ViewModel

时间:2017-09-12 16:18:48

标签: android wear-os android-architecture-components

我希望能够在我的可穿戴应用程序中使用新Android架构组件中的生命周期组件(与我在Android应用程序中一样)。

在我的主Android应用中,我将LiveData字段放在ViewModel中。然后可以从我的Activity和我的片段中访问/绑定此ViewModel。要执行此操作,我使用ViewModelProviders.of方法android.support.v4.app.Fragmentandroid.support.v4.app.FragmentActivity。到目前为止一切都很好......

我遇到的问题是,我的Wear应用程序基于WearableActivity类,该类从android.app.Activity而不是android.support.v4.app.FragmentActivity延伸。这使我无法在可穿戴应用中使用ViewModelProviders.of

我已经四处询问并尝试寻找替代解决方案,但我不知道ViewModelProviders的内部因此我现在无法解决这个问题。如果没有答案,我希望有人能够对这些组件进行研究。能够使用ViewModel& amp; LiveData贯穿我的应用程序(移动和穿戴)。

4 个答案:

答案 0 :(得分:3)

更新: AmbientMode似乎是解决这个问题的新方法。

正如@codingjeremy在他的帖子中所提到的,他们现在已经在Android支持库27.0.0中引入了它。

原件:

我通过将WearableActivity中的实现逐字复制到我自己的项目中定义的新WearableFragmentActivity类,然后将其更改为扩展FragmentActivity来解决这个问题。直接获得Google的支持将是理想的解决方案,但如果您在此期间寻找解决方法,这应该会有效。

答案 1 :(得分:0)

这是不可能的,因为ViewModel取决于支持片段(即FragmentActivity)。

请在issuetracker.google.com

提交WearableFragmentActivity等效内容的功能请求

答案 2 :(得分:0)

我使用AmbientMode.AmbientCallbackProvider代替WearableActivity来使用它。

这是新的首选方法,它仍然为您提供onEnterAmbient()onAmbientUpdate()onExitAmbient(),但也允许您使用Activity(或任何子类.. .FragementActivity等)...允许你支持架构组件。

Official docs call out the details and code

答案 3 :(得分:0)

您可以使用此移植架构组件:LifeCycleData