如何在android中关闭我的应用程序

时间:2012-01-10 06:44:02

标签: android

当我按下设备的后退按钮时,我想进入主屏幕。我正在使用此代码..

public void onBackPressed() {
   this.finish();
   return;
}

12 个答案:

答案 0 :(得分:18)

按BACK键会有效地为您拨打finish()。无需捕获BACK键。

我假设您的问题是当您按下BACK键时,它只是回到您应用中的上一个Activity

如果是这种情况,那么当他们在您的应用中开始新的Activity时,让所有活动“自我终止”....

startActivity(new Intent(this, MyNewActivity.class));
finish();

如果您这样做,那么按BACK时将不会返回Activity,它将始终返回主屏幕。

答案 1 :(得分:6)

你可以试试这个

@Override
public void onBackPressed() {
        Intent startMain = new Intent(Intent.ACTION_MAIN);      
        startMain.addCategory(Intent.CATEGORY_HOME);                        
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);          
        startActivity(startMain); 
  }

答案 2 :(得分:3)

好的,要启动设备的Home sceen,请在onKeyDown()

中使用此代码
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event)  { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
        // do something on back.
        Intent startMain = new Intent(Intent.ACTION_MAIN); 
        startMain.addCategory(Intent.CATEGORY_HOME); 
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(startMain); 

       this.finish(); 
        return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

如果您想要关闭您的应用程序,那么我认为您必须以finish()以某种方式(某种标准方式)或使用

关闭所有活动

android.os.Process.killProcess(android.os.Process.myPid())此代码会杀死您的应用。 (有些丑陋的方式..!)

答案 3 :(得分:3)

你应该覆盖finish()

@Override
public void finish() {
    System.out.println("finish activity");      
    SaveData();     
    System.runFinalizersOnExit(true) ;          
    super.finish();
    android.os.Process.killProcess(android.os.Process.myPid());
}

然后调用此方法:

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

答案 4 :(得分:2)

当您致电NewAcitivy致电finish()时。startActivity之后,之前的活动将被关闭。

然后使用

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

答案 5 :(得分:1)

你可以试试这个:

public boolean onKeyDown(int keyCode, KeyEvent event) 
{       
  if(keyCode==KeyEvent.KEYCODE_BACK){
        this.finish ();
      }
    return true;
}

答案 6 :(得分:0)

你想覆盖OnkeyDown&完成活动

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
       this.finish();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

答案 7 :(得分:0)

简单的方法是在您进入下一个活动时完成当前活动。

只需在finish()后执行startActivity(),然后在任何活动的背面按下,只需拨打finish()即可退出应用程序,因为所有其他活动都不存在在堆栈中。

答案 8 :(得分:0)

您可以从任何地方关闭应用程序以调用此类Intent:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

这是从任何地方,任何点击事件中关闭应用程序的最佳方式

答案 9 :(得分:0)

您需要使用标志启动意图以清除实际活动之上的活动。

public void onBackPressed() {
    Intent intent = new Intent(this, HomeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    this.startActivity(intent);
    this.finish();
}

答案 10 :(得分:0)

从官方 Guideline

中引用

<强> FLAG_ACTIVITY_CLEAR_TOP

  

如果设置,则正在启动的活动已在运行中   当前任务,然后而不是启动它的新实例   活动,其上的所有其他活动将被关闭   这个意图将作为一个传递到(现在在顶部)旧活动   新的意图。

<强> FLAG_ACTIVITY_CLEAR_TASK

  

如果在传递给Context.startActivity()的Intent中设置,则此标志将为   导致任何与活动相关联的现有任务   在活动开始前清除。也就是活动   成为一个空的任务的新根,和任何旧的任务   活动结束了。这只能与。一起使用   FLAG_ACTIVITY_NEW_TASK。

<强> FLAG_ACTIVITY_NO_HISTORY

  

如果设置,则新活动不会保留在历史堆栈中。立刻   用户离开它,活动结束。这可能   也可以使用noHistory属性设置。

<强> FLAG_ACTIVITY_NEW_TASK

  

如果设置,此活动将成为此任务的新任务的开始   历史堆栈。

@Override
public void onBackPressed()
{

                Intent intCloseApp = new Intent(Intent.ACTION_MAIN);
                intCloseApp.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intCloseApp.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                intCloseApp.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                intCloseApp.addCategory(Intent.CATEGORY_HOME);
                intCloseApp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intCloseApp);
  }

答案 11 :(得分:0)

public void onBackPressed() {
 System.exit(1);
   return;
}

野蛮的方式