【问题标题】:Tab Switching freezes (setAdapter)选项卡切换冻结 (setAdapter)
【发布时间】:2021-10-11 03:21:53
【问题描述】:

我有问题:tabLayout 有 3 个标签,最后 2 个有 recyclerview。

当我按下第二个或第三个标签时,我有一些冻结,因为所有这些标签都有 recylerview,有适配器。

我调试了应用程序并了解到应用程序冻结在这一行:setAdapter(adapter),我该如何解决这个问题?

对于tablayout,我使用FragmentPagerAdapter(预加载下一个标签并保存上一个)

谢谢,对不起我的英语

示例屏幕:

【问题讨论】:

  • 你在切换标签时使用幻灯片动画吗?如果是这样,您可能在主线程上同时做太多工作..
  • 我使用viewpager,当我是滑动标签时,我没有冻结;仅当我单击带有 recyclerview 的选项卡时,所有操作都在使用 rxjava2 的后台线程中工作,但是 setAdapter 没有,这是一个问题
  • 我的意思是 RecyclerView 渲染和滑动效果在 UI 上很重。由于您只能在 UI 线程上执行与 UI 相关的操作,因此后台线程不会为您提供更多帮助。您可以尝试调用 setAdapter() 方法并稍稍延迟(500 毫秒或 1000 毫秒),看看它是否能改善行为。另一种选择是不“延迟加载”标签片段......
  • 您也可以尝试使用setCurrentItem这样的mViewPager.setCurrentItem(position, false);选择标签时禁用幻灯片动画
  • 有可能您正在 UI 线程上执行一些操作,这些操作应该在后台运行,但没有代码我们可以继续猜测。

标签: java android adapter android-tablayout


【解决方案1】:

为时已晚,但无论如何我都会给出答案, 尝试使用 FragmentStateAdapter 而不是 FragmentPagerAdapter。 我希望这能解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2019-10-31
    • 2018-12-23
    相关资源
    最近更新 更多