问题:
我目前遇到一个问题,我的应用程序在首次打开时尝试加载太多片段。
我有BottomNavigationView
与ViewPager
该负载4个片段-的每一个Fragment
包含TabLayout
与ViewPager
负载至少 2个片段。
可以想象,这是很多UI渲染(10多个片段)的-特别是当其中一些片段包含繁重的组件(如日历,条形图等)时。
当前提出的解决方案:
在需要片段时控制UI加载-因此,直到用户第一次访问该片段,才有理由加载它。
似乎肯定有可能,包括Play商店在内的许多应用都在这么做。请在此处查看示例
在上面的视频示例中-导航到选项卡后,正在加载UI组件。它甚至具有嵌入式的加载符号。
1)我试图弄清楚该怎么做-在什么时候我知道需要创建该片段UI还是已经创建了它?
2)另外,我将在其中启动UI创建过程的片段生命周期回调是什么?onResume()
表示用户界面对用户可见,因此加载用户界面会很漫长和延迟。
希望这足够清楚。
编辑:
我已经在使用FragmentStatePagerAdapter
as ViewPager
适配器。我注意到super(fm)
构造器中的方法现在已被弃用:
ViewPagerAdapter(FragmentManager fm) { super(fm); // this is deprecated }
所以我将其更改为:
ViewPagerAdapter(FragmentManager fm) { super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); }
BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
:指示仅当前片段将处于Lifecycle.State.RESUMED状态。所有其他片段的上限为Lifecycle.State.STARTED。
这似乎是有用的作为onResume()
的Fragment
时候才会被称为Fragment
是对用户可见。可以通过某种方式使用此指示加载UI吗?