android 按两次返回键强制退出整个APP

来源:互联网 发布:数据库的物理结构 编辑:程序博客网 时间:2024/06/05 12:50

     首先介绍一下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>


0 0