Activity退出机制探究[1]

来源:互联网 发布:淘宝企业店铺怎么缴税 编辑:程序博客网 时间:2024/05/01 05:15
 

 如果某个应用只包含单一的Activity,“何时退出,如何退出”往往不是问题。但当一个Application中包含多个Activity的时候,以上问题便会浮现。
 

方法一:通常我们最常用的方法是调用finish()方法来结束当前的Activity,但该方法实际上只是将当前Activity置于onStop状态,并没有彻底关闭该进程。

 

方法二:调用System.exit(0),这种野蛮的方法存在三个问题:

1、  可能会丢失正在处理中的其他线程数据

2、  退出后再进入,你会发现进入的首界面是你先前没有关闭的Activity

3、  可能会造成系统响应缓慢

 

方法三: 调用
android.os.Process.killProcess(android.os.Process.myPid());

通过获取该进程ID来将其kill掉。可惜的是,实际上每个Activity都开启了一个Process,因此只能kill掉当前的这个Activity,而无法退出整个应用。

 

方法四:调用ActivityManager.forceStopPackage();

需要说明的是:这种表述本身是错误的,应用层中的ActivityManager中并没有forceStopPackage方法,要使用该方法需要在frameworks层中使用ActivityManagerNative来调用。由于对frameworks层涉及较少,笔者没有对该方法进行验证,请有条件的朋友验证一下,共同交流。

原创粉丝点击