Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
Android 安卓系统中屏幕锁定和主页按钮的区别_Android_Android Activity_Surfaceview_Glsurfaceview - Fatal编程技术网

Android 安卓系统中屏幕锁定和主页按钮的区别

Android 安卓系统中屏幕锁定和主页按钮的区别,android,android-activity,surfaceview,glsurfaceview,Android,Android Activity,Surfaceview,Glsurfaceview,我不理解用户锁定屏幕(使用顶部屏幕锁定按钮)并立即返回应用程序与用户按下主页按钮然后立即返回应用程序之间的区别 似乎所有的电话都在打。根据我的观察: 按下主页按钮或屏幕锁定时调用:On Pause->On Stop 在重新按下主页按钮或屏幕锁定后按下应用程序时调用:onRestart->onStart->onResume 我的个人问题: 这尤其会使我变灰,因为我在恢复时将SurfaceView和GLSurfaceView重新创建为框架布局,但是,根据按下的按钮,元素的顺序会发生变化。我的简历中有

我不理解用户锁定屏幕(使用顶部屏幕锁定按钮)并立即返回应用程序与用户按下主页按钮然后立即返回应用程序之间的区别

似乎所有的电话都在打。根据我的观察:

按下主页按钮或屏幕锁定时调用:On Pause->On Stop

在重新按下主页按钮或屏幕锁定后按下应用程序时调用:onRestart->onStart->onResume

我的个人问题:

这尤其会使我变灰,因为我在恢复时将SurfaceView和GLSurfaceView重新创建为框架布局,但是,根据按下的按钮,元素的顺序会发生变化。我的简历中有以下代码:

cameraPreviewArea = (FrameLayout) findViewById(id.camera_preview);
cameraPreviewArea.addView(glView, glLayout);
cameraPreviewArea.addView(camprevSurfaceView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
在以下情况下,这具有在顶部显示my GLSURFACHEVIEW的效果:应用程序第一次启动时,以及应用程序从屏幕锁定状态恢复到屏幕解锁状态时。但是,在按下home(主页)按钮,然后重新打开应用程序时,SurfaceView将被放置在glSurfaceView的顶部

如果我按如下方式切换addView调用,则会出现相反的情况。我可以用一些布尔标志来解决这个问题,但由于我不确定屏幕锁定/解锁和主页按钮之间的差异,我不清楚在哪里设置布尔值。另外,我不想以这种方式解决这个问题,因为它看起来很粗糙,并且缺乏对问题的真正理解


提前谢谢你

一般来说,没有理由需要不断地在
活动的层次结构中添加和删除视图,删除这些代码将使应用程序更加一致


由于您感兴趣的两个视图都是
SurfaceView
组件,如果在窗口可见或隐藏时需要执行某些操作,则可以利用
SurfaceHolder.Callback
来监视
onSurfaceCreated()
onsurfacedestromed()
方法。

一般来说,您没有理由需要不断地在
活动的层次结构中添加和删除视图,删除此代码将使您的应用程序更加一致


由于您感兴趣的两个视图都是
SurfaceView
组件,如果在窗口可见或隐藏时需要执行某些操作,则可以利用
SurfaceHolder.Callback
来监视
onSurfaceCreated()
onsurfacedestromed()
方法。

这种特定情况——使用两个SurfaceView并在一个窗口中指定其Z顺序——目前Android似乎不支持。在安卓开发者小组,您可以分享以下信息:

不显示任何类型的多个活动重叠曲面视图 目前由该框架支持。你可以让他们工作,但是 这主要是因为运气——视图层次结构没有定义 这些曲面的Z顺序,也不要尝试确保它们在中是Z顺序的 任何特定的方式,因此这可能会因任何原因而改变。

嗯。。。好了


…但对于任何试图这样做的人,我找到了一个解决办法:将相机预览尺寸设为一个小的1x1正方形。这将允许您同时显示两者(因为摄影机预览必须可见才能继续预览),并忽略cameraPreview呈现给您的令人讨厌的SurfaceView问题。我相信严格使用一个GLSurfaceView有更好的解决方案,但它在3.0以下是不兼容的。

这种特定情况——使用两个surfaceview并在一个窗口中指定它们的Z顺序——Android目前似乎不支持。在安卓开发者小组,您可以分享以下信息:

不显示任何类型的多个活动重叠曲面视图 目前由该框架支持。你可以让他们工作,但是 这主要是因为运气——视图层次结构没有定义 这些曲面的Z顺序,也不要尝试确保它们在中是Z顺序的 任何特定的方式,因此这可能会因任何原因而改变。

嗯。。。好了


…但对于任何试图这样做的人,我找到了一个解决办法:将相机预览尺寸设为一个小的1x1正方形。这将允许您同时显示两者(因为摄影机预览必须可见才能继续预览),并忽略cameraPreview呈现给您的令人讨厌的SurfaceView问题。我相信严格使用一个GLSURFACHEVIEW是一个更好的解决方案,但它与3.0以下的版本不兼容。

您随后是否从
onPause()
onStop()中的
FrameLayout
中删除视图?甚至修改视图层次结构的目的是什么?是的,我正在调用
cameraPreviewArea.removeAllViews()在我发布的代码之前(在onPause中)。您可能提出了一个关于在暂停和停止时修改视图层次结构的好观点。我可能想重新考虑不重新创建各种视图。是否随后从
onPause()
onStop()
中的
FrameLayout
中删除视图?甚至修改视图层次结构的目的是什么?是的,我正在调用
cameraPreviewArea.removeAllViews()在我发布的代码之前(在onPause中)。您可能提出了一个关于在暂停和停止时修改视图层次结构的好观点。我可能想重新考虑一下,不要重现各种观点。