【问题标题】:Kill app after 'Home' is pressed (stop it from just pausing)按下“主页”后杀死应用程序(停止它只是暂停)
【发布时间】:2013-06-26 09:58:16
【问题描述】:

每当按下主页按钮时,都会调用 onPause,但是我设置了 onPause 以在打开对话框时处理暂停绘图线程。这意味着当您按下主页按钮时,它会暂停绘图线程并保持当前活动打开,但是我想关闭活动/应用程序。如何阻止主页按钮调用 onPause 并使其完成 Activity?

编辑:我刚刚意识到该应用程序不再可见,因此应该调用 onStop() ,但事实并非如此。这可能是什么原因造成的?

【问题讨论】:

  • 你的意思是你的应用程序保持在前面,即使你按下主页按钮?还是只是它继续在后端运行?这将是正常行为。
  • @Ridcully - 它不会停留在前面,但会调用 onPause 并且永远不会调用 onStop。我已经覆盖 onPause 来处理打开对话框时的处理,并覆盖 onResume 来处理对话框关闭时的处理,但是当我使用主页按钮导航离开时,它永远不会正确恢复并崩溃。
  • 那是什么对话框?谁在展示它?
  • 语音识别对话框。用户打开它。
  • 没有看到代码,任何人都很难说出你的代码为什么会这样。

标签: java android onpause activity-finish home-button


【解决方案1】:

覆盖 onUserLeaveHint() 并相应地完成/终止您的活动/进程。

例如,

@Override
public void onUserLeaveHint() {
    finish();
    super.onUserLeaveHint();
}

更新

创建一个本地布尔变量来跟踪显示对话框的按钮单击。用户单击按钮后立即将其设置为 true;在所有其他情况下(在onResume() 中,一旦开始绘制线程,从对话框返回后等)保持它为假。在onPause() 中,仅当该变量为真时才暂停绘图线程。

【讨论】:

  • 我试过了,但是当用户按下按钮打开语音识别对话框时,它会关闭应用程序。
  • 你应该在问题中提到这一点:)
  • 这个语音识别对话框是不是你在问题中提到的那个对话框?
  • 是的。用户单击一个按钮,对话框将在当前 Activity 上打开。
  • 创建一个变量来跟踪按钮按下工作。我在设置语音识别意图时将其设置为 true,并在 OnActivityResult() 中将其设置为 false。谢谢!
【解决方案2】:

您实际上可以覆盖onPause() 并从那里调用finish()

但是,只是不要这样做。用户期望一种共同的行为,如果您覆盖用户期望与您的应用交互的方式,他们会感到困惑。

【讨论】:

  • 正如我所提到的,我已经重写了 onPause 以处理打开对话框时暂停的 Activity,并且使用 onResume 在对话框关闭后再次开始重绘。我不能在这里调用完成,因为打开对话框时活动将结束。
【解决方案3】:

它真的崩溃了吗?然后你应该发布显示崩溃的 LogCat。

也许您没有在覆盖的onPause() 方法中调用super.onPause()? 这是强制性的,如果您忘记了它,应用程序就会崩溃 - 在异常中明确告诉您您没有调用 super.onPause()

【讨论】:

  • 我已经调用了 super.onPause(),而且,很抱歉,它不会崩溃,它会一直挂起,直到它被“未响应”消息强制关闭。
【解决方案4】:
   @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());
        }
    });

【讨论】:

  • “添加窗口后无法更改窗口类型”使用此代码时出错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多