Mat*_*Rez 4 android android-lifecycle android-fragments
我创建了一个Android应用程序,它使用ViewPager来浏览三个片段(三个片段中的每一个都包含一个gridview).
我最近开始学习片段,并假设在我的网格视图在其片段中创建后,每个片段都将在内存中,而不必再次加载.
最近我注意到,当我从左侧片段滑动到中间片段,然后到右侧片段时,最左边的片段必须再次使用我的适配器填充其gridview.
我只是想知道为什么当我从最左边的片段导航到最右边的片段时会发生这种情况,但不是当我在并排片段之间导航时.它是否只将最新的片段保留在内存中并杀死其他片段?或者是否有其他原因导致应用程序无法将所有三个片段保留在内存中?当我在片段之间快速导航时,我的应用程序会有点滞后和缓慢,所以如果可能的话,只需要一次绘制每个gridview就好了.
我在onCreate()中填充我的arraylist(用于填充适配器),然后用onActivityCreated中的适配器填充我的gridview(Bundle savedInstanceState)
在ViewPager保持一定量的离屏接片(Fragment在存储器S,当然).我相信所有设备的默认值为1.因此,当您滚动到最右侧时,只有左侧的那个将保留在内存中.
如果您希望ViewPager保留内存中的所有选项卡(小心 - 这可能在设备或其他正在运行的应用程序上很难),您可以设置要保留在内存中的屏幕外标签数量.为此,请使用对象上的setOffscreenPageLimit方法.ViewPagerViewPager
例:
ViewPager pager = (ViewPager) findViewById(R.id.pager); // Your pager's ID
pager.setOffscreenPageLimit(2); // Will retain 2 off-screen tabs + your selected tab
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
3049 次 |
| 最近记录: |