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

     首先介绍一下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的代码:

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());
                }
             }

        }


你可能感兴趣的:(android学习)