【问题标题】:Android: Black screen flashes when activity resumesAndroid:活动恢复时黑屏闪烁
【发布时间】:2020-09-14 23:13:55
【问题描述】:

我创建的TabbedActivity 有问题。

我注意到如果我将我的应用程序置于后台,然后将其放回前台,屏幕会在重新出现布局之前黑屏片刻。看起来好像正在重新创建活动,但我已经确认在应用程序恢复时不会调用 onCreate()

我在activity中的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);

        }
    }

【问题讨论】:

    标签: java android android-activity


    【解决方案1】:

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

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

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

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

    如果您的 Activity 需要很长时间才能加载,请尝试在 OnCreate 和 OnResume 方法中减少它必须执行的工作量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      相关资源
      最近更新 更多