【发布时间】: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