繁体   English   中英

在RecyclerView中未调用ViewModel onCleared

ViewModel onCleared not called in RecyclerView

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个下面的代码的适配器。 问题是,似乎从未为列表项的ViewModel调用ViewModel的onCleared()-Method。 是否需要设置特殊的方法/标志才能清除这些ViewModel?

class BaseRecyclerViewViewModelAdapter(
        private val lifecycleOwner: LifecycleOwner
) : RecyclerView.Adapter<BaseRecyclerViewViewModelViewHolder>() {

    var items: List<BaseRecyclerViewItemViewModel> = emptyList()
        set(value) {
            field = value
            notifyDataSetChanged()
        }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseRecyclerViewViewModelViewHolder {
        val binding: ViewDataBinding =
                DataBindingUtil.inflate(LayoutInflater.from(parent.context), viewType, parent, false)
        return BaseRecyclerViewViewModelViewHolder(binding)
    }

    override fun getItemCount() = items.size

    override fun onBindViewHolder(holder: BaseRecyclerViewViewModelViewHolder, position: Int) {
        with(holder.binding) {
            setVariable(BR.viewModel, items[position])
            setLifecycleOwner(lifecycleOwner)
            executePendingBindings()
        }
    }

    override fun getItemViewType(position: Int) = items[position].layoutId
}
1 个回复

而且不会。 根据官方文件

所有者活动完成后,框架将调用ViewModel对象的onCleared()方法,以便清理资源。

如果您想clear列表中的某些内容,则应手动进行。

4 永远不会调用共享 ViewModel 的 onCleared()

我有一个活动应用程序。 在应用程序的一个部分中,有一个 Fragment 的主从组合,这些 Fragment 使用共享的 ViewModel在它们之间共享一些数据。 我面临的问题是,即使两个 Fragment 都已被销毁,也不会调用 ViewModel 的 onCleared() 方法。 onCl ...

5 当我使用导航组件关闭片段时,为什么会调用我的 viewModel 中的 onCleared?

我试图阅读this ,但我想我找不到解决方案。 说我有 FragmentA 和 Fragment B。我使用此代码移动到片段 B 当我从片段 B 返回到片段 A 时,我的片段中的onDestroy被调用,然后我的 ViewModel 上的onCleared也被调用。 但是当我旋转手机(配置更 ...

8 MVVMCross中未调用ViewModel

在FundamentalView.cs中 ,我具有click事件,该事件触发具有选项(添加新人员和新计算)的视图底部的片段。 CardDialogView.axml CardDialogView.cs 以下对应的ViewModel不会被调用? 我想知道我在想什么? ...

9 如何在应用进程被终止之前在 ViewModel 的 onCleared 方法中为 SavedStateHandle 提供的 LiveData 设置特定值

在我的个人项目中,我使用了 Hilt(依赖注入)、SavedStateHandle 和 ViewModel。 SavedStateHandle 允许我跨进程死亡保存数据。 因为 ViewModel 不能在进程死亡后继续存在,所以我使用 Hilt 注入在 ViewModel 内部注入了 save ...

10 何时调用视图模型 onCleared

ViewModel 是独立于活动/片段生命周期还是仅独立于它们的配置更改。 它们什么时候会不复存在并调用后续的 onCleared() 方法。 viewModel 可以与另一个 Activity 共享吗? 一种情况: 这种共享是否可行?这是一个很好的做法。 此外,由于应用程序生命周期回调 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM