每当按下主页按钮时,都会调用 onPause,但是我已将 onPause 设置为在打开对话框时处理暂停绘图线程。这意味着当您按下主页按钮时,它会暂停绘图线程并保持当前活动打开,但是我想关闭活动/应用程序。如何阻止主页按钮调用 onPause 并使其完成活动?
编辑:我刚刚意识到该应用程序不再可见,因此应该调用 onStop() ,但事实并非如此。这可能是什么原因造成的?
每当按下主页按钮时,都会调用 onPause,但是我已将 onPause 设置为在打开对话框时处理暂停绘图线程。这意味着当您按下主页按钮时,它会暂停绘图线程并保持当前活动打开,但是我想关闭活动/应用程序。如何阻止主页按钮调用 onPause 并使其完成活动?
编辑:我刚刚意识到该应用程序不再可见,因此应该调用 onStop() ,但事实并非如此。这可能是什么原因造成的?
覆盖onUserLeaveHint()并相应地完成/终止您的活动/流程。
例如,
@Override
public void onUserLeaveHint() {
finish();
super.onUserLeaveHint();
}
更新
创建一个本地布尔变量来跟踪显示对话框的按钮单击。用户单击按钮后立即将其设置为 true;在所有其他情况下(在onResume()
,一旦开始绘制线程,从对话框返回后等)保持它为假。onPause()
仅当该变量为真时才暂停绘图线程。
您实际上可以覆盖onPause()
并finish()
从那里调用。
但是,不要那样做。用户期望一种共同的行为,如果您覆盖用户期望与您的应用程序交互的方式,他们会感到困惑。
真的会崩溃吗?然后你应该发布显示崩溃的 LogCat。
也许您没有调用super.onPause()
覆盖的onPause()
方法?这是强制性的,如果您忘记了它,应用程序会崩溃——在异常中明确告诉您您没有调用super.onPause()
.
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
android.os.Process.killProcess(android.os.Process.myPid());
}
});