Android: activity 恢复时黑屏闪烁

Android: Black screen flashes when activity resumes

我创建的 TabbedActivity 有问题。

我注意到,如果我将我的应用程序置于后台,然后将其带回前台,在布局重新出现之前,屏幕会变黑一会儿。看起来 activity 正在重新创建,但我已经确认 onCreate() 在应用程序恢复时未被调用。

我在activity中的onResume()onStart()方法中设置了断点,看什么时候出现黑屏。当应用程序返回前台时,调用 onStart(),然后调用 onResume(),然后屏幕闪黑一秒钟。在此之后,布局重新出现。此处显示:

我想指出这个 activity 的 onCreate()onResume() 方法除了调用它们的超类之外是空的。上面 gif 中显示的片段甚至没有覆盖 onResume()onCreate() 方法。此外,在我的应用程序中的其他非选项卡式活动中,这种行为不会发生 - 它只发生在 TabbedActivity.

如果需要更多信息,请告诉我,我很乐意提供。我只是不确定这个问题可能发生在哪里。

编辑: 当我注释掉 ANOTHER FRAGMENT 的 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);

        }
    }

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

这个 activity 附有一些片段。造成此问题的一个因素是尝试缓存太多片段,如下所示:

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

最大限度地减少 off-screen 页面的数量使我的 activity 的初始加载速度明显加快。

如果您的 activity 加载时间很长,请尝试减少它在 OnCreate 和 OnResume 方法中必须完成的工作量。