Android:恢复活动后黑屏闪烁

时间:2020-09-14 23:13:55

标签: java android android-activity

我创建的TabbedActivity遇到了问题。

我注意到,如果我将应用程序放在后台,然后又放回前台,那么屏幕会变黑一会儿,然后重新显示布局。似乎正在重新创建活动,但是我已经确认恢复应用程序时未调用onCreate()

我在活动的onResume()onStart()方法中设置了断点,以查看何时出现黑屏。当应用返回到前台时,将调用onStart(),然后调用onResume(),然后屏幕闪烁黑色一秒钟。此后,重新出现布局。显示在这里:

black screen flash

我想指出,此活动的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);

        }
    }

1 个答案:

答案 0 :(得分:0)

此问题已解决。问题是,当我的应用程序重新成为焦点时,正在做很多工作。这导致加载活动所需的时间增加。

此活动附有一些片段。造成此问题的一个因素是试图像这样缓存太多的片段:

ViewPager mViewPager = findViewById(R.id.view_pager);
mViewPager.setOffscreenPageLimit(4);

最大限度地减少屏幕外页面的数量,使我的活动的初始加载速度明显加快。

如果您的活动需要很长时间才能加载,请尝试减少其OnCreate和OnResume方法中要做的工作量。