标题基本上是这样说的

我的应用程序主要由使用 ViewPager FragmentStatePagerAdapter 组成

当我向FragmentStatePagerAdapter添加一系列 SurfaceViews 时,会出现问题。
仅出于测试目的,我没有以任何方式将SurfaceViews子类化。
当我浏览几个页面时,单击“主页”,然后返回 Activity ,整个设备在呈现任何内容之前卡住一两秒钟。在从后栈中拉出后,我可以多次启动和完成该应用程序,以使其恢复工作。我知道该应用程序正在运行,因为在第一次出现屏幕截图时,几个AsyncTasks几乎都已完成。我知道这些AsyncTasks不会导致此问题,因为我已将它们删除了无效。

当我将SurfaceViews更改为 Views 时,问题完全消失了。

当我使用实际的SurfaceView(对于我的项目是不可商议的)时,也会发生此问题。在多个设备上也会发生此问题。

在这一点上,我认为故障完全在ViewPager上,但是我不知道该怎么办,因为我需要该接口(interface)组件。

任何帮助将不胜感激!

编辑:

为了明确起见,SurfaceViews/Views表示已添加到FragmentStatePagerAdapter的Fragment的 View 。

最佳答案

为将来的任何Google员工找到了解决方案!

这是我的做法:

在我的 fragment 中,我在onCreate()中实例化了mySurfaceView。

然后我在onCreateView()期间将虚拟布局(LinearLayout)附加到实际 View

然后在onResume()中,我使用removeAllViews()清除了虚拟布局,然后调用了addView(mySurfaceView)

这似乎允许ViewPager快速建立其布局,然后在用户实际需要看到任何东西之前弹出SurfaceView!

10-05 18:30