【问题标题】:How to kill process by clicking back button in Android?如何通过单击Android中的后退按钮来终止进程?
【发布时间】:2013-01-01 10:51:19
【问题描述】:

我在android中做了一个应用程序。这是一个与计时器相关的应用程序。现在我已经尝试了很多方法来控制android设备的后退按钮,当它被按下时,进程应该被杀死并直接显示主菜单。 ..请帮帮我...提前谢谢你..!

【问题讨论】:

  • 主菜单是什么意思?您的应用程序的主菜单或设备的主菜单?
  • 哪个进程?主菜单是什么意思?

标签: android android-intent back kill-process


【解决方案1】:

试试这个代码

@Override
public void onBackPressed() {
   yourActivity.this.finish;
}

【讨论】:

  • @Priya-但你能告诉我..如果我希望我的应用程序中的所有活动都发生这种情况。我应该将此代码添加到所有活动中吗?
  • @jimmycool 您可以添加到所有活动中,它会在按下返回按钮时完成活动。
  • @Priya-NO NO 你没有明白我的意思..我在每个活动中都使用了你的代码,但它的工作方式就像我按下后退按钮进入上一个活动,而不是进入主屏幕设备...!你现在明白我的问题了吗???
  • 您可以使用此代码转到主屏幕 onBackPressed。意图意图=新意图(意图.ACTION_MAIN);意图.addCategory(意图.CATEGORY_HOME);开始活动(意图);
  • @Priya-u 没让我听懂……我在谈论设备的主屏幕,而不是应用程序……它不工作……:(
【解决方案2】:

在您的活动中覆盖 onBackPressed() 并在那里添加您的必要代码

onBackPressed

当 Activity 检测到用户按下背部时调用 钥匙。默认实现只是完成当前活动, 但是你可以覆盖它来做任何你想做的事情。

【讨论】:

    【解决方案3】:

    你可以这样做点击后退按钮。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
             finish();// call finish() on click of back button
        }
        return super.onKeyDown(keyCode, event);
    }
    

    例如:当您从 A 活动移动到 B 活动使用 startActivity(new intent(...)); 不要完成或杀死 A 活动,它会在堆栈中。So when you click on back button in B activity you can go back to A activity, which is already in stack.

    当您想要返回主菜单时,在您移动到下一个活动时,在每个活动上调用 finish()。

    例如:当您从 A 活动移动到 B 活动使用 startActivity(new intent(...));调用finish()杀死A活动。So when you click on back button in B activity you can go back to Main Menu coz every activity ll be killed.

    sn-p 在这里:

    startActivity(new intent(A.this, B.class));
    finish(); // when you click back button on B activity, directly you can go to main menu
    

    更新: 在按下后退按钮时使用以下代码杀死应用程序的其他方法。 但不推荐

     @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
             android.os.Process.killProcess(android.os.Process.myPid());// Kill the app on click of back button.
        }
        return super.onKeyDown(keyCode, event);
    }
    

    希望这可以帮助您理解这个概念。

    【讨论】:

    • 先生..谢谢你..为此..但我想要的是,当我按下后退按钮时,它应该从项目中的任何活动中终止进程并直接进入主菜单.. .你能帮我吗?谢谢你先生..!
    • 简单..当你移动到下一个活动调用完成(),所以它会从堆栈中删除
    • 不不,你没有听懂我在说什么......我希望从运行应用程序的任何阶段,如果我按下后退按钮,该进程应该被终止并且控制应该直接进入主菜单而不是上一页..!
    • 没错,您在每个活动上都调用了finish()。所以当你按下后退按钮时,你会进入主菜单
    • @TechEnd-u not getting ..bro.."mainmenu" 表示设备的主屏幕...现在你明白我的问题了吗?请帮帮我..
    【解决方案4】:

    只需清除活动历史记录,以便您的应用程序关闭。然后在startActivity(); 之后调用finsh();

      <activity
            android:name="com.example.abcd.Your_Acitivty"
            android:noHistory="true">
      </activity>
    

    编码愉快!

    【讨论】:

    • 我认为这个不起作用。即使我使用 noHistory 并调用 finish(),它也会继续使用内存。
    【解决方案5】:

    吉米,您可以使用此代码转到设备的主屏幕-

        finish();
        moveTaskToBack(true);
         System.exit(0);    
    

    finish() 方法仅关闭当前 Activity。

    moveTasktoBack 将隐藏您的应用程序,您也可以通过 android.os.Process.killProcess(android.os.Process.myPid()) 快速终止应用程序,如果你要。

    【讨论】:

      【解决方案6】:
      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
          if (keyCode == KeyEvent.KEYCODE_BACK) {
              moveTaskToBack(true);
              return true;
          }
          return super.onKeyDown(keyCode, event);
      }
      

      【讨论】:

      • 这甚至没有完成当前的活动——它只是隐藏它。
      【解决方案7】:

      在 Manifest 中,你可以尝试添加这个

      <activity
          android:name=".MainActivity"
          android:finishOnCloseSystemDialogs="true"
      </activity>
      

      我遇到了类似的问题,这为我解决了。

      【讨论】:

        【解决方案8】:

        我通过覆盖 onBackPress() 和 onStop() 解决了这个问题

        @Override
        protected void onStop() {
            super.onStop();
            System.exit(0); //kill the app
        
        }
        
        @Override
        public void onBackPressed() { //here I capture the event onBackPress 
            super.onBackPressed(); 
            onStop(); //call onStop
        }
        

        【讨论】:

          猜你喜欢
          • 2019-11-07
          • 2014-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-16
          • 2011-06-14
          相关资源
          最近更新 更多