【问题标题】:Doing heavy work in "ListAdapter" or "RecyclerView.ViewHolder"?在“ListAdapter”或“RecyclerView.ViewHolder”做繁重的工作?
【发布时间】:2021-09-05 15:49:51
【问题描述】:

我的 Android 应用中有两个类。

  • TestListAdapter 扩展了 ListAdapter

  • TestViewHolder 扩展 RecyclerView.ViewHolder

我的问题是,我是否应该做繁重的任务,例如在“TestListAdapteronBindViewHolder() 方法或“TestViewHolder”绑定方法中的特殊距离计算或字符串处理(s)?

从性能的角度来看,哪个更好还是无关紧要?

问候

【问题讨论】:

    标签: android android-recyclerview listadapter android-viewholder


    【解决方案1】:

    您真正繁重的任务(下载、文件加载和处理)应该在另一个线程中运行,因为您应该通过 LoadManager 启动 AsyncLoaderTask 并等待 ListAdapter 中通知 RecyclerView 项目已更新的结果。

    LoadManager 还具有生存生命周期的好处,因此您可以在恢复状态时更改方向并将侦听器附加到正在运行的负载管理器,并等待任务完成而无需重新启动。

    【讨论】:

    • 感谢您的回复 :) 如何寻找更小的计算?因为那样的话 LoaderManager 会有点太多的开销
    • 如果您没有看到在主线程中运行这些影响,因此您应该在适配器调用 onBindViewHolder 时将代码移动到 ViewHolder,如果计算是永久性的,请考虑在您的模型中创建一个 var保存通过 recyclerview 回收视图时的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多