首先介绍一下android中几组结束Activity、APP的方法以及特点。
finish():结束当前的Activity,不会立即释放内存。遵循android内存管理机制。
exit(): 结束当前的Activity,并立即释放当前Activity的所占的资源。
注:exit(0)是正常退出,其他种情况都是异常退出。
killProcess(): 结束当前的Activity,并立即释放当前Activity的所占的资源。
restartPackage(): 结束整个APP,包括service等其他Activity组件。
注: restartPackage()在android2.2 版本以后,不能将应用程序结束。
特别注意:
除finish()方法可以自动调用Activity的生命周期方法如onStop(),onDestory()等,其余三种退出APP方法均不能调用Activity的生命周期方法。除非在调用这几个方法之前或之后主动调用Activity的声明周期方法。
如:system.exit(0);
onDestory();
下面贴出android按下两次返回键强制退出整个APP的代码:
<span style="font-size:18px;">private void exit() {
// TODO Auto-generated method stub
long clickTime = 0
if((System.currentTimeMillis() - clickTime ) > 2000){
Toast.makeText(getApplicationContext(), "再按一次后退键退出程序", Toast.LENGTH_SHORT).show();
clickTime = System.currentTimeMillis();
}else{
int currentVersion = android.os.Build.VERSION.SDK_INT;
if(currentVersion >android.os.Build.VERSION_CODES.ECLAIR_MR1){ //android 版本高于2.2
Log.e(TAG, "退出应用");
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
System.exit(0);
}else{ //android版本低于2.2,android 2.2之后,restartPackage()不可以强制将整个APP退出。
ActivityManager am = ( ActivityManager) getSystemService (ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
}
}
}</span>