【问题标题】:android: Difference between pressing home button and power button?android:按下主页按钮和电源按钮之间的区别?
【发布时间】:2013-09-29 02:10:44
【问题描述】:

有人知道按电源键和home键的区别吗? 在我的应用程序中,我尝试在活动的每个生命周期中放置一个调试语句,结果都相同,也就是说,活动将是 onPause 并且在活动重新打开时将是 onRestart 然后是 onResume(如果我们按 home按钮)或当我们通过按电源按钮再次打开设备时(如果我们之前按电源按钮)。

具有相同的行为/序列,我希望我的相机应用程序在两种情况下运行相同。但事实并非如此。我使用surfaceview预览到相机。如果按home键再重新打开app,就可以正常运行了。

但是,如果我按下电源按钮,然后再次按下它以再次打开它,surfaceView 会冻结,因此预览也会冻结。但相机实际上仍在工作(如果我按下相机按钮,它仍然会拍照)。

所以我真的很困惑这两者之间有什么区别......

编辑:

经过测试和测试,我发现不同的是,当我按下home键时,应用程序会onPause(),然后surfaceView会被销毁。另一方面,如果我按下电源按钮,surfaceView 不会被破坏。

仍然对导致这两种不同行为的原因感到困惑......

【问题讨论】:

  • 你在onPause()释放相机
  • 当表面视图冻结时,logcat 中是否有任何内容?
  • @FoamyGuy 不。没有警告,没有错误..只有我的调试行。
  • 如果您正在使用硬件加速,请尝试将其关闭,如果没有,请尝试将其打开。如果可以的话,还可以测试一些不同的设备。这种行为可能不是每台设备都存在的问题。
  • @FoamyGuy 你说的硬件加速是什么意思?我可以知道如何打开/关闭它吗?我在另一台设备上尝试过,同样的问题发生了。

标签: android surfaceview home-button


【解决方案1】:

我发现了同样的问题,我相信当按下 PowerButton 时,设备会从横向变为纵向以显示锁定屏幕。在我的例子中,我看到了 surfaceChanged 而不是预期的被破坏,但是宽度和高度表明变化是从横向到纵向的。

编辑

在装有 4.1.2 的 Galaxy S2 上,当我按下电源按钮时,设备只会进入“onPause”,并且表面只会发生变化(从横向变为纵向)。 当我点击 HomeButton 时,它会转到“onStop”,并且表面被破坏而没有改变。

如果您在“onPause”中尝试以下操作,您可以确定屏幕是否仍然打开或关闭

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();

API 7 级。

AFAIK 在“onPause”中自己调用“onStop”是安全的,因为您不能导致真正的生命周期发生变化,您只需执行您写入停止的代码(超级方法似乎什么都不做,我检查了活动来源)

【讨论】:

  • 这是有可能的!永远不要检查表面是否只是改变而没有被破坏。但我最终所做的是破坏并重新创建表面视图:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多