基本上就是标题所说的,
我的应用程序主要由 ViewPager
组成它使用 FragmentStatePagerAdapter
当我添加一系列 SurfaceViews
时出现问题到 FragmentStatePagerAdapter。
出于测试目的,我没有以任何方式对 SurfaceView 进行子类化。
当我浏览几页,点击“主页”,然后返回 Activity 时,整个设备会在渲染任何内容之前卡住一两秒钟。我可以在应用程序从后台堆栈中拉出后恢复所需的时间内多次启动和完成()该应用程序。我知道应用程序正在运行,因为在第一个屏幕绘制最终出现时,几个 AsyncTasks 已经接近完成。我知道这些 AsyncTasks 不会导致问题,因为我已将它们删除但没有任何效果。
当我将 SurfaceViews 更改为 Views
时问题完全消失了。
当我使用我的实际 SurfaceViews(对于我的项目来说是不可协商的)时也会出现此问题。此问题也会出现在多个设备上。
此时我认为故障完全出在 ViewPager 上,但我不知道该怎么办,因为我需要那个界面组件。
如有任何帮助,我们将不胜感激!
编辑:
澄清一下,SurfaceViews/Views 代表添加到 FragmentStatePagerAdapter 的 Fragment 的 View 。
最佳答案
为 future 的 google 员工找到了解决方案!
这是我的做法:
在我的 fragment 中,我在 onCreate() 中实例化了 mySurfaceView
然后我在 onCreateView() 期间将虚拟布局 (LinearLayout) 附加到实际 View
然后在 onResume() 中,我使用 removeAllViews() 清除了虚拟布局,然后调用了 addView(mySurfaceView)
这似乎允许 ViewPager 快速构建其布局,然后在用户实际需要查看任何内容之前弹出 SurfaceView!
关于android - ViewPager + SurfaceView = 导航回 Activity 时的长时间延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11356085/