Android之退出系统

Android之退出系统

1、以前做退出系统功能的时候大概是这么来做的:

自己定义一个Ativity栈,然后每创建一个activity就会将当前创建的activity添加到当前的activity栈中,在退出的时候就finish自己栈中的所有activity。使用如下:

(1)Activity栈:
public class ActivityUtil {
   //静态Activity集合
   private static List<Activity> acts = new ArrayList<Activity>();
   private static List<Activity> allActs = new ArrayList<Activity>();

   //添加方法
   public static void addActs(Activity act) {
      if (!acts.contains(act))
         acts.add(act);
   }

   //关闭方法
   public static void closeActs() {
      for (int i = 0; i < acts.size(); i++) {
         acts.get(i).finish();
      }
      acts.clear();
   }

   //添加方法
   public static void recordActs(Activity act) {
      if (!allActs.contains(act))
         allActs.add(act);
   }
   //关闭方法
   public static void exit() {
      for (int i = 0; i < allActs.size(); i++) {
         allActs.get(i).finish();
      }
   }
}
(2)当创建activity的时候:
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityUtil.addActs(this);
    setContentView(R.layout.XXX);
(3)当退出系统的时候:
ActivityUtil. closeActs()

但是后来发现这个方法在activity中存在静态变量的时候,会导致内存溢出,而且随着系统流程的进行,打开的activity变多的时候,会占用很多内存,不可取。所以在网上找了一下,发现一个比较不错的方法,如下:

2、Dalvik VM的本地方法

android.os.Process.killProcess(android.os.Process.myPid())    //获取PID 
 System.exit(0);   //常规java、c#的标准退出法,返回值为0代表正常退出

这个是退出当前进程的方法,直径退出当前进程,不占用什么内存,也不用担心内存溢出。

3、网上还有一个说是任务管理器的方法大体描述如下:

首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限

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

系统会将,该包下的 ,所有进程,服务,全部杀掉,就可以杀干净了,要注意加上

<uses-permission android:name=\"android.permission.RESTART_PACKAGES\"></uses-permission>

但是经测试,这个方法在一些手机上不管用,有待研究。

个人感觉方法2最实用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值