问题标签 [android-architecture-lifecycle]

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

android - Android 架构组件生命周期状态

https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.State.html

STARTED Lifecycle.State STARTED 对于一个Activity,有两种情况会达到这个状态:onStart调用后;在 onPause 调用之前。

正如上面的文档所说,在 onPause 调用之前,我无法理解 STARTED 状态背后的基本原理。有人可以解释一下吗?

0 投票
4 回答
5070 浏览

android - LifecycleRegistry 实例何时开始监听 LifecycleOwner 的生命周期变化?

我已经开始学习架构组件,但找不到一件事。

LifecycleFragment只是创建了一个新的LifecycleRegistry对象,它不会开始观察片段的生命周期。

我猜 LifecycleRegistry 对象开始监听片段的生命周期,例如,当我们将它作为第一个参数放入LiveData.observe()时,但我在源代码中没有找到任何证据。

问题: LifecycleRegistry对象何时以及如何开始观察片段的生命周期并刷新LifecycleRegistry.mState

0 投票
1 回答
1020 浏览

android - 在 LifecycleObserver 中持有 Lifecycle 对象的引用

在 LifecycleObserver 类中,保存 Lifecycle 对象的引用有多好?会出现什么并发症?

0 投票
6 回答
24230 浏览

android - 在不同 Activity 中的 Fragment 之间共享 ViewModel

我有一个名为 SharedViewModel 的 ViewModel:

我已经基于 Google 的 Arch ViewModel 参考页面上的 SharedViewModel 示例实现了它:

https://developer.android.com/topic/libraries/architecture/viewmodel.html#sharing_data_between_fragments

一个活动中的两个或多个片段需要相互通信是很常见的。这绝不是微不足道的,因为两个片段都需要定义一些接口描述,并且所有者活动必须将两者绑定在一起。此外,两个片段都必须处理另一个片段尚未创建或不可见的情况。

我有两个片段,称为ListFragmentDetailFragment

到目前为止,我在一个名为 的活动中使用了这两个片段MasterActivity,并且一切正常。

我得到了 ViewModel ListFragment,选择了使用它的值DetailFragment

但是,现在,在某些情况下,我需要将ListFragment(不同设备配置的布局)添加到不同的活动中,称为DetailActivity. 有没有办法类似于上面的例子?

0 投票
1 回答
1126 浏览

android - Android LiveData:MutableData 永远不会处于活动状态

我有以下内容ViewModel

在我的Activity.onCreate(onSavedInstanceState: Bundle?)我有:

稍后在我的代码中我有signInViewModel.googleApiClient.value = it. 此时(在单击按钮后发生,因此我处于恢复状态)我希望LiveData触发我的观察者,但它没有

在调试时,我注意到我MutableLiveData的从未处于active状态。

我究竟做错了什么?拜托,我知道我GoogleApiClient在示例中使用了一个实例,并且应该使用带有 automanage 之类的 Activity 对其进行初始化,但这不是这里的问题。我想动态设置它并触发我的观察者。

编辑:添加调用 setValue 的代码

0 投票
2 回答
2425 浏览

android - 如何在扩展 LifecycleActivity 的视图中设置SupportActionBar

我有一个扩展 AppCompactActivity 的 Activity,并且在onCreate方法中我以通常的方式设置了ToolbarusingsetSupportActionBar方法:

但是现在我有一个ViewModel组件,并且要在作为此活动的子项的片段之间共享数据并管理生命周期,我必须在 Activity 中获取此组件,因此我将其扩展为 LifecycleActivity。

但我注意到 LifecycleActivity 与 AppCompatActivity 无关,FragmentActivity 也没有。

难道我做错了什么?

0 投票
1 回答
880 浏览

android - Dagger : 为什么 dagger 需要一个不依赖于另一个对象的对象的 @inject 构造函数

我想我错过了一些东西。我收到此错误:

假设类如下:

还有一类PostVM

还有一个组件:

在活动中:

如您所见,为 PostVM 类提供的示例不依赖于任何东西,为什么我需要一个 @inject 构造函数?

0 投票
3 回答
3141 浏览

android - LiveData 和 LifecycleObserver 有什么区别

我已经阅读了android官方文档中关于生命周期实时数据的文档。我知道该类实现了 LifeCycleObserver 并使位置侦听器自动关闭或打开。我也知道实时数据可以自动使其处于活动状态或不活动状态。我尝试使用这两种方式来实现 Location Observer。它可以工作,并且在更新位置时显示 Toast 2 次。

我的问题是,如果我真的想实现数据库连接、GPS 位置、下载图像、运行后台服务等功能,这两种方式有什么区别。我可以只使用 LiveData 类吗?因为我只需要实现主动和非主动功能。

LocationLiveData.java

MyLocationListener.java

组件活动.java

0 投票
1 回答
8021 浏览

android - ViewModel 和 AndroidViewModel 有什么区别

对于任何有这个问题的人,

根据 Android 文档,

由于 ViewModel 比特定的活动和片段实例化的寿命更长,它不应该引用视图或任何可能持有对活动上下文的引用的类。如果 ViewModel 需要 Application 上下文(例如,寻找系统服务),它可以扩展 AndroidViewModel 类,并在构造函数中有一个接收 Application 的构造函数(因为 Application 类扩展了 Context)。

文档可以在这里找到: https ://developer.android.com/topic/libraries/architecture/viewmodel.html

编辑:重复解释:我的意思是你可以将类扩展到 ViewModel 以及 AndroidViewModel。当您应该扩展哪个时,上述解释仅用于此。上面的链接一般讲述了 MVVM 架构的 ViewModel,而不是 android.arch.lifecycle.ViewModel

0 投票
1 回答
224 浏览

android - 使用 android 架构组件实现侧边栏导航

使用 android 的新架构组件,您不能使用 android 提供的默认自动生成的类导航抽屉类......为什么?因为它从 AppCompatActivity 扩展为工具栏等小部件提供 support.v7 lib 的使用。当现在使用新架构组件 Lifecycleactivity 而不是扩展 AppCompatActivity 时,您无法实现默认的导航抽屉类 - 谁能给我一个解决方法或一个例子如何做到这一点?