问题标签 [lifecycleowner]

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 投票
4 回答
6510 浏览

android - 将 LifeCycleOwner 传递给 RecyclerView.Adapter 是否安全

考虑绑定到 viewModel 的布局数据。更具体地说,布局使用布局变量来访问这个底层视图模型。每当绑定膨胀时,它的 viewModel 和 lifeCycleOwner 都将被设置。(当然 viewModel 包含一些 liveData,直接绑定到一些视图属性)。

向 RecyclerView(在 Activity 中创建和设置)传递一个 viewModel 列表。对于每个视图模型,一个 ViewHolder 是通过扩展一个新的布局副本及其数据绑定来创建的。

onBindViewHolder策略是

  • 不要触摸视图模型
  • 设置ViewHolder.dataBinding.setViewModel(viewModels[position])
  1. 但是如何设置 LifeCycleOwner?
  2. 将 LifeCycleOwner 作为参数传递给适配器好吗?毕竟,适配器只会与 RecyclerView 一样长,而 RecyclerView 则只会与父 Activity 一样长。
  3. 这是在 RecyclerView 的上下文中使用 dataBinding 的明智方式吗?

图。1。layout_counter.xml :添加到 recyclerView 的单个组件的布局。

布局

代码(如果需要)

  • MainViewModel.java
  • 适配器.java
  • MainActivity.java
  • layout_counter.xml
  • layout_main.xml

MainViewModel.java

适配器.java

MainActivity.java

layout_counter.xml

layout_main.xml

0 投票
1 回答
485 浏览

android - 将活动传递给 LifecycleObserver

我需要将活动传递给 LifecycleObserver 类以执行位置任务:

LocationObserver 在片段中创建和使用:

问题是:将活动传递给 LifecycleObserver 类会导致内存泄漏吗?如果是这样,可能的解决方案是什么?非常感谢您的任何回答/评论!

0 投票
0 回答
134 浏览

android - ViewModel 可以实现 LifecycleOwner 吗?

我知道,ViewModels 永远不应该保留对 a 的引用,LifecycleOwner因为它保留对上下文的引用,因此这会导致内存泄漏。但我的问题是,我可以LifecyclerOwnerViewModel自己实现一个吗?有两个有效的回调,onCreate()在调用视图模型的构造函数时触发,并在调用视图模型的构造函数onDestroy()时触发onCleared()。由于LifecycleOwner只是一个 Java 接口,我认为这不会导致任何内存泄漏。但为了更安全,我问这个。

0 投票
1 回答
3085 浏览

android - 当 getView() 为 null 时,即 onCreateView() 之前或 onDestroyView() 之后,无法访问 Fragment View 的 LifecycleOwner

我的应用中有一个片段,即 HomeFragment。以下是它的代码:

应用程序编译成功。但就在我在我的设备上打开它时,应用程序崩溃了。这是我在运行应用程序时在 logcat 中遇到的错误:

我假设我试图在错误的位置访问片段视图的生命周期所有者。请帮我解决这个问题。

0 投票
0 回答
13 浏览

android - 接近传感器在其 LifeCycleOwner 为 onDestroy 时保持注册状态

我有一个可以拨打电话的项目。调用发生在作为 LifecycleOwner 的 CallActivity 中,而另一个处理传感器的类是 LifecycleObserver。

当用户 A 呼叫用户 B 时,接近传感器已注册并且屏幕关闭。如果用户 A 结束通话并且用户 B 的耳朵仍然靠近设备,则在 CallActivity 处于 onDestroy 时传感器仍处于注册状态。

结果,传感器在不应该靠近手机的地方用手势关闭屏幕。如果用户 B 在 CallActivity 仍然存在时将手机从耳边移开,则传感器已成功取消注册并且应用程序运行正常。

我应该如何处理它。如何确保以正确的方式注销传感器?有没有“全球”的方式?

呼叫活动

ProximitySensor.class

顺便说一句,我如何在没有重复代码的注释中声明更多状态?

0 投票
1 回答
46 浏览

android - 在 LifecyclerObserver 中使用 findViewbyId 以传统方式查看绑定

我是生命周期观察者(片段)的新手。我正在尝试将 XML 中定义的视图与片段链接起来。传统上,我们使用findViewById在onActivityCreated方法中执行此操作。我们如何在使用生命周期观察者时做到这一点?

请不要建议数据绑定。在这种情况下,我试图避免它。

0 投票
2 回答
127 浏览

android - 如何在对话框中使用 Android LifecycleOwner

我想在 Dialog 中使用 mvvm 但我不知道如何通过LifecycleOwner观察

我试过了context as LifecycleOwnercontext as AppCompatActivity但都失败了

请帮助我,谢谢!

0 投票
0 回答
9 浏览

android-livedata - 片段中的requireActivity而不是requireContext

我在片段中有一个 LiveData 观察者,有时里面的代码Observer{}会抛出错误

它正在发生,因为requireActivity()正在返回null所以异常

我确认没有我的片段与活动分离的情况。我怀疑可能会发生崩溃,因为我没有将生命周期所有者引用传递给观察者?