如果用户点击Home键,我可以暂停我的应用程序,因为onPause
事件会触发。
但是,如果用户长按Home,则会弹出最近的应用启动器,我的应用程序会在其后面继续运行。
我想在这种情况下暂停我的申请。我该怎么办?
(注意:我不想阻止长按Home或以任何方式改变其行为。我的应用只需要知道它发生了。这是一个游戏,所以我想暂停它。)
答案 0 :(得分:1)
如果所有其他方法都失败,请让用户手动暂停(通过按钮或菜单)。
听起来你有一种情况,即用户在长按期间对你的游戏持续不满,但此时用户已经将注意力从游戏中移开。如果我正处于对时间敏感的游戏中,并希望通过长按主页按钮来导航,我首先想到的是手动暂停游戏。
只是值得深思,祝你好运。
答案 1 :(得分:1)
您还可以尝试在活动中覆盖onWindowFocusChanged。类似的东西:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Log.d(TAG, "On windows focus changed. (" + hasFocus + ")");
if (!hasFocus) doStopGame();
}
但是,当您尝试从最近的应用程序对话框返回应用程序时,我仍然不清楚如何处理事件。在这种情况下,不调用上述处理函数。但是,您仍然可以暂停游戏并向游戏玩家提供恢复它的对话框。
答案 2 :(得分:-1)
您可以覆盖活动中的onKeyLongPress()方法,执行您想要的操作,然后只需调用super方法。
http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html