转载地址:点击打开链接

由于android 是 基于liux 操作系统的, 所以 一般情况下 我们 使用 
       android.os.Process.killProcess(android.os.Process.myPid()); 这个方法就可以杀掉进程,
    不过当 activity 多的时候,而且当我们忘记finish 其中的某几个,或者说,你对 AndroidMainfest.xml 中的 每个 Activity 中 android:launchMode , android:alwaysRetainTaskState 这些都不是很清楚时,就会出现 应用的 关闭不完全,主要原因是由于 残留的 Activity 本身是一个进程,所以系统又把这个Activity提到了最前面,就会使我们的程序没有完全关闭, 

        那么 再 1.5---2.1  用了一个 方法,都可以成功的解决这个问题,那就是

             final ActivityManager am = (ActivityManager) ACTIVITY
//                                .getSystemService(Context.ACTIVITY_SERVICE);
//                am.restartPackage(ACTIVITY.getPackageName());

       但是到了 2.2 的时候, 这个方法,就不奏效了, 那么我想请问 各位同仁们,有没有 什么通用的办法呢~~~~  

           这个问题,网上的童鞋,也是有非常多做法,android123 也给我们提供了,非常多的解决办法, 但是小弟不才,他们提供的方法,有些时候,不管用,所以很费脑~~~~
          现在我将我 这个方法 分享给大家, 这个方法在 1.5--2.3 的机器上都测试过,是可以完全杀死进程的

       该方法需要两个必要条件
      条件一:  一个自己管理Activity 的列表, 网上很多用 ArryList 来存储acitivity
      条件二: 需要一段,重新开启堆栈,跳转到 Home界面,并且 用liux的杀掉进程的方法

      代码如下
       protected void quit()
      {
             int size = activityManager.activityStackCount();
            for(int i =size-1 ; i > 0 ;i--)
              {
                Activity activity =  activityManager.allTaskActivity().get(i);
                 activityManager.popActivity(activity);
              }
              activityManager = null;
             getActivity().finish();
            //目前最为通用的 关闭进程的方法以后的版本使用
            Intent startMain = new Intent(Intent.ACTION_MAIN);
            startMain.addCategory(Intent.CATEGORY_HOME);
            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(startMain);
           android.os.Process.killProcess(android.os.Process.myPid());
     }
   大家可以试一下, 欢迎拍砖, 共同进步

-----------------------------------------------------

我自己的使用心得是,前面只要控制好所有的activity的finish方法,最后调用:

 Intent startMain = new Intent(Intent.ACTION_MAIN);            startMain.addCategory(Intent.CATEGORY_HOME);            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            startActivity(startMain);           android.os.Process.killProcess(android.os.Process.myPid());


即可做到完全杀死程序的进程

更多相关文章

  1. 彻底解决Android 应用方法数不能超过65K的问题
  2. android 获取路径目录方法以及判断目录是否存在,创建目录
  3. 【Android 开发】:Android五种布局的使用方法
  4. Android 进程和线程模型
  5. 一个简单的Android进程管理器(初稿)
  6. Android进程管理简单介绍
  7. Android中的gen文件为空或者不存在的处理方法
  8. Android进程管理机制及优化
  9. Android进程分类与管理

随机推荐

  1. Android(安卓)采用HttpClient提交数据到
  2. Android利用已有控件实现自定义控件
  3. Android开发规范最新详尽版下载
  4. Android(安卓)Intent详解
  5. Unity自动打包工具——Mac上打包android
  6. android修炼进阶之法
  7. 初学Android,数据存储之使用SQLite数据库
  8. Android之声音管理器《AudioManager》的
  9. android studio项目转ADT的辛酸历程
  10. 在Android的c/c++代码中使用LOG