Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:活动恢复时黑屏闪烁_Java_Android_Android Activity - Fatal编程技术网

Java Android:活动恢复时黑屏闪烁

Java Android:活动恢复时黑屏闪烁,java,android,android-activity,Java,Android,Android Activity,我对我创建的TabbedActivity有问题 我注意到,如果我把我的应用程序放在后台,然后把它放回前台,屏幕会在布局重新出现之前变黑一会儿。看起来好像正在重新创建活动,但我已确认,在应用程序恢复时,不会调用onCreate() 我在活动中的onResume()和onStart()方法中设置断点,以查看黑屏何时出现。当应用程序返回前台时,会调用onStart(),然后调用onResume(),然后屏幕会在瞬间闪烁黑色。之后,布局将重新出现。如下所示: 我想指出的是,这个活动的onCreate(

我对我创建的
TabbedActivity
有问题

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

我在活动中的
onResume()
onStart()
方法中设置断点,以查看黑屏何时出现。当应用程序返回前台时,会调用
onStart()
,然后调用
onResume()
,然后屏幕会在瞬间闪烁黑色。之后,布局将重新出现。如下所示:

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

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

编辑: 我意识到,当我注释掉另一个片段的
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);

        }
    }

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

此活动附带了一些片段。导致此问题的一个因素是试图缓存过多的片段,如下所示:

ViewPager mViewPager = findViewById(R.id.view_pager);
mViewPager.setOffscreenPageLimit(4);
最小化屏幕外页面的数量使我的活动的初始加载速度明显加快

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