问题标签 [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.
android - Android 架构组件生命周期状态
https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.State.html
STARTED Lifecycle.State STARTED 对于一个Activity,有两种情况会达到这个状态:onStart调用后;在 onPause 调用之前。
正如上面的文档所说,在 onPause 调用之前,我无法理解 STARTED 状态背后的基本原理。有人可以解释一下吗?
android - LifecycleRegistry 实例何时开始监听 LifecycleOwner 的生命周期变化?
我已经开始学习架构组件,但找不到一件事。
LifecycleFragment只是创建了一个新的LifecycleRegistry对象,它不会开始观察片段的生命周期。
我猜 LifecycleRegistry 对象开始监听片段的生命周期,例如,当我们将它作为第一个参数放入LiveData.observe()时,但我在源代码中没有找到任何证据。
问题: LifecycleRegistry对象何时以及如何开始观察片段的生命周期并刷新LifecycleRegistry.mState
?
android - 在 LifecycleObserver 中持有 Lifecycle 对象的引用
在 LifecycleObserver 类中,保存 Lifecycle 对象的引用有多好?会出现什么并发症?
android - 在不同 Activity 中的 Fragment 之间共享 ViewModel
我有一个名为 SharedViewModel 的 ViewModel:
我已经基于 Google 的 Arch ViewModel 参考页面上的 SharedViewModel 示例实现了它:
一个活动中的两个或多个片段需要相互通信是很常见的。这绝不是微不足道的,因为两个片段都需要定义一些接口描述,并且所有者活动必须将两者绑定在一起。此外,两个片段都必须处理另一个片段尚未创建或不可见的情况。
我有两个片段,称为ListFragment
和DetailFragment
。
到目前为止,我在一个名为 的活动中使用了这两个片段MasterActivity
,并且一切正常。
我得到了 ViewModel ListFragment
,选择了使用它的值DetailFragment
。
但是,现在,在某些情况下,我需要将ListFragment
(不同设备配置的布局)添加到不同的活动中,称为DetailActivity
. 有没有办法类似于上面的例子?
android - Android LiveData:MutableData 永远不会处于活动状态
我有以下内容ViewModel
:
在我的Activity.onCreate(onSavedInstanceState: Bundle?)
我有:
稍后在我的代码中我有signInViewModel.googleApiClient.value = it
. 此时(在单击按钮后发生,因此我处于恢复状态)我希望LiveData
触发我的观察者,但它没有。
在调试时,我注意到我MutableLiveData
的从未处于active
状态。
我究竟做错了什么?拜托,我知道我GoogleApiClient
在示例中使用了一个实例,并且应该使用带有 automanage 之类的 Activity 对其进行初始化,但这不是这里的问题。我想动态设置它并触发我的观察者。
编辑:添加调用 setValue 的代码
android - 如何在扩展 LifecycleActivity 的视图中设置SupportActionBar
我有一个扩展 AppCompactActivity 的 Activity,并且在onCreate
方法中我以通常的方式设置了Toolbar
usingsetSupportActionBar
方法:
但是现在我有一个ViewModel组件,并且要在作为此活动的子项的片段之间共享数据并管理生命周期,我必须在 Activity 中获取此组件,因此我将其扩展为 LifecycleActivity。
但我注意到 LifecycleActivity 与 AppCompatActivity 无关,FragmentActivity 也没有。
难道我做错了什么?
android - Dagger : 为什么 dagger 需要一个不依赖于另一个对象的对象的 @inject 构造函数
我想我错过了一些东西。我收到此错误:
假设类如下:
还有一类PostVM
还有一个组件:
在活动中:
如您所见,为 PostVM 类提供的示例不依赖于任何东西,为什么我需要一个 @inject 构造函数?
android - LiveData 和 LifecycleObserver 有什么区别
我已经阅读了android官方文档中关于生命周期和实时数据的文档。我知道该类实现了 LifeCycleObserver 并使位置侦听器自动关闭或打开。我也知道实时数据可以自动使其处于活动状态或不活动状态。我尝试使用这两种方式来实现 Location Observer。它可以工作,并且在更新位置时显示 Toast 2 次。
我的问题是,如果我真的想实现数据库连接、GPS 位置、下载图像、运行后台服务等功能,这两种方式有什么区别。我可以只使用 LiveData 类吗?因为我只需要实现主动和非主动功能。
LocationLiveData.java
MyLocationListener.java
组件活动.java
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
android - 使用 android 架构组件实现侧边栏导航
使用 android 的新架构组件,您不能使用 android 提供的默认自动生成的类导航抽屉类......为什么?因为它从 AppCompatActivity 扩展为工具栏等小部件提供 support.v7 lib 的使用。当现在使用新架构组件 Lifecycleactivity 而不是扩展 AppCompatActivity 时,您无法实现默认的导航抽屉类 - 谁能给我一个解决方法或一个例子如何做到这一点?