zoukankan      html  css  js  c++  java
  • Android退出程序

      通常一个Android程序会对应多个activity,对于结束一个activity,通常我们会想到使用finish(),finish仅仅是针对activity的,它只是将活动推向后台,并没有立即释放内存,资源并没有被清理。例如A—〉B(由A窗口打开B窗口),如果在B中调用finish(),只是将B窗口关闭了,这时候会显示A窗口。那么如何退出整个程序呢?

    一、Dalvik VM的本地方法

    1. android.os.Process.killProcess(android.os.Process.myPid())    //获取PID , 杀死进程

    2. System.exit(0);   //常规java、c#的标准退出法,返回值为0代表正常退出  

    public void exitProgrames() {
    
            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());
            //或者 System.exit(0);
        }

    二、任务管理器方法

      前提:Android 1.5 API Level为3以上

         需要权限:<uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-  permission>

      代码:

    ActivityManager actManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
    actManager.restartPackage(getPackageName());

    三、自定义实现管理Activity

    //单例模式管理activity
    public class ActivityManger {
    
        List<Activity> activityList = new LinkedList<Activity>();
        private static ActivityManger instance;
        
        public ActivityManger getInstance(){
            
            if(instance == null){
                instance = new ActivityManger();
            }
            return instance;
        }
        
        //添加activity
        public void addActivity(Activity activity){
            activityList.add(activity);
        }
        
        //遍历关闭每一个activity
        public void exit(){
            
            for(Activity activity: activityList){
                activity.finish();
            }
        }
    }

    四、通过 Intent.FLAG_ACTIVITY_CLEAR_TOP

      A打开B 时,在Intent中加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP

    ntent intent = new Intent();
    intent.setClass(A.this, B.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //设置FLAG
    startActivity(intent); 

      B启动时,将会清除该进程空间的所有Activity。

  • 相关阅读:
    147-21. 合并两个有序链表
    146-14. 最长公共前缀
    145-如何查看python帮助文档
    144-38. 外观数列
    143-121. 买卖股票的最佳时机
    142-206. 反转链表
    141-98. 验证二叉搜索树
    Nginx中文域名配置
    Keepalived+Nginx架构整理版
    Tomcat启动脚本
  • 原文地址:https://www.cnblogs.com/xuepeng0521/p/4434207.html
Copyright © 2011-2022 走看看