我不明白用户锁定屏幕(使用顶部屏幕锁定按钮)并立即返回应用程序与用户按下主页按钮然后立即返回应用程序之间的区别。
似乎正在发出所有相同的呼叫。根据我的观察:
按下主页按钮或屏幕锁定时调用:onPause -> onStop
在重新按下主页按钮或屏幕锁定后按下应用程序时调用:onRestart -> onStart -> onResume
我的个人问题:
这尤其让我感到沮丧,因为我在 onResume 上将 SurfaceView 和 GLSurfaceView 重新创建为 FrameLayout,但是,根据按下的按钮,元素的顺序正在发生变化。我的 onResume 中有以下代码:
cameraPreviewArea = (FrameLayout) findViewById(id.camera_preview);
cameraPreviewArea.addView(glView, glLayout);
cameraPreviewArea.addView(camprevSurfaceView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
这具有在以下情况下将我的 glSurfaceView 显示在顶部的效果:应用程序第一次启动时,以及当应用程序从屏幕锁定然后屏幕解锁恢复时。但是,在按下主页按钮,然后重新打开应用程序时,SurfaceView 被放置在 glSurfaceView 的顶部!
如果我按如下方式切换 addView 调用,则会发生相反的情况。我可以用一些布尔标志来解决这个问题,但由于我不确定屏幕锁定/解锁和主页按钮之间的区别,我不清楚我将在哪里设置布尔值。另外,无论如何我都不想以这种方式解决问题,因为它看起来很老套,并且对问题缺乏任何真正的理解。
先感谢您!