【问题标题】:How do I terminate android app programmatically when home button pressed?按下主页按钮时如何以编程方式终止android应用程序?
【发布时间】:2016-07-23 03:02:58
【问题描述】:

我正在尝试构建代码以在按下主页按钮时以编程方式终止应用程序。我尝试了以下方法:

protected void onStop() {
    super.onStop();
    android.os.Process.killProcess(android.os.Process.myPid());
    super.onDestroy();
    this.finish();
    System.exit(1);
}

但它仍然不起作用。该程序仍在后台运行。有什么想法吗?

【问题讨论】:

  • “按下主页按钮时以编程方式终止应用程序”——为什么? “程序仍在后台运行”——您是如何确定的?
  • 来自文档:“杀死具有给定 PID 的进程。请注意,尽管此 API 允许我们根据其 PID 请求杀死任何进程,但内核仍将对哪些 PID 施加标准限制你居然可以杀人。”这意味着即使调用没有失败(没有例外),也可能根本没有效果。

标签: android exit terminate


【解决方案1】:

你介意使用暴力杀戮吗? [异步和立即]

public void onStop()
     {
     AsyncTask.execute(new Runnable(){public void run()
              {
              android.os.Process.killProcess(android.os.Process.myPid());
              }});
     }
  • 记住: Android 的设计目的不是为了通过 HOME BUTTON PRESS 杀死应用程序

...你决定

【讨论】:

    【解决方案2】:

    在您的类中创建以下常量:

    public static final int KEYCODE_HOME 
    

    重写 onAttachedToWindow 方法:

    @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)
        {
           //This will close the current activity
           finish();
        }
    });
    

    看看这个: Intercept Home Key

    希望这会有所帮助!

    【讨论】:

    • 请复制该链接的内容以创建完整、正确的答案。
    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多