我有一个非常相似的问题: ViewPager + SurfaceView = 导航回活动时的长时间延迟
除了我使用的是 API 10,所以我没有使用片段。
我在 ViewPager 中有 SurfaceViews - 我工作得很好,除了当我滚动到新页面时,绘制需要一段时间。直到 SurfaceView 在屏幕上可见时才会调用 SurfaceView.surfaceCreated 方法。我希望在调用 ViewPager 的 PagerAdapter.instantiateItem 并通过 addView 将 SurfaceView 添加到 ViewPager 时创建表面。有没有办法强制 SurfaceView 在那个时候创建一个表面?
我正在使用基于Awesome Pager 示例的代码
@Override
public Object instantiateItem(View collection, int position) {
Log.i("Main Activity", "instantiateItem p:" + position);
View p;
if(position == 1){
// Page003 is a surfaceview
p = new Page003(cxt, position);
} else {
// in the future I will create more pages!
p = new Page003(cxt, position);
}
((ViewPager) collection).addView(p);
return p;
}
是否有类似于另一个问题的答案的方法 - 通过将 SurfaceView 包装在另一个视图中?我宁愿不要使代码不必要地复杂化。