我创建的TabbedActivity
遇到了问题。
我注意到,如果我将应用程序放在后台,然后又放回前台,那么屏幕会变黑一会儿,然后重新显示布局。似乎正在重新创建活动,但是我已经确认恢复应用程序时未调用onCreate()
。
我在活动的onResume()
和onStart()
方法中设置了断点,以查看何时出现黑屏。当应用返回到前台时,将调用onStart()
,然后调用onResume()
,然后屏幕闪烁黑色一秒钟。此后,重新出现布局。显示在这里:
我想指出,此活动的onCreate()
和onResume()
方法除调用其超类外还为空。上面gif中显示的片段甚至没有覆盖onResume()
或onCreate()
方法。另外,在我应用程序中其他非选项卡式活动中,不会发生此行为-仅在TabbedActivity
中发生。
如果需要更多信息,请告诉我,我们将很乐意提供。我只是不确定这个问题可能在哪里发生。
编辑:
我意识到当我注释掉另一个片段的onResume()
方法的内容时,这种情况不再发生。该方法如下所示:
@Override
public void onResume() {
super.onResume();
System.out.println("RESUME");
if (mShowCamera != null)
{
mShowCamera.camera = null;
}
mCamera = Camera.open();
mShowCamera = new ShowCamera(getContext(), mCamera);
mMainCamLayout = (FrameLayout)getView().findViewById(R.id.camLayout);
mMainCamLayout.addView(mShowCamera);
Camera.Parameters cameraParameters = mCamera.getParameters();
cameraParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
if (cameraParameters.getSupportedFocusModes() != null &&
cameraParameters.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
{
mCamera.setParameters(cameraParameters);
}
}
答案 0 :(得分:0)
此问题已解决。问题是,当我的应用程序重新成为焦点时,正在做很多工作。这导致加载活动所需的时间增加。
此活动附有一些片段。造成此问题的一个因素是试图像这样缓存太多的片段:
ViewPager mViewPager = findViewById(R.id.view_pager);
mViewPager.setOffscreenPageLimit(4);
最大限度地减少屏幕外页面的数量,使我的活动的初始加载速度明显加快。
如果您的活动需要很长时间才能加载,请尝试减少其OnCreate和OnResume方法中要做的工作量。