关于Android程序的退出,目前我们没有再用System.exit(0)或killProcess的机制而是直接用Activity.finish假退出了。因此在内存充足时,用进程工具会发现我们的程序退出后还在内存里。上一篇文章中我也说了这是Android本身的内存管理和Activity生命周期的机制决定的,本来就是无可厚非的。
但有人说这一来会有小白认为我们的程序老占着后台不好,特别是用360什么的能看到你的进程,看起来像流氓行为。另外我记得有人跟我说他测试过其它常用的程序如QQ都会自动退出,你为什么做不到?搞得我都有点担心。但是我今天实际试验了一下,压根没这回事,QQ也没有完全退出,在它退出后我仍然能用工具看到它(我手机上用的是QQ for pad版)。然后我又测试了几个程序,如新浪微博和安卓优化大师,发现它们也是假退出,退出后进程还在。我估计其他人说他手机上会退出,多半是因为他的机器跑的东西太多内存不足。我机子上测试时是有500M空闲内存。
之后我又试验发现,如果只有一个RootActivity,可以用System.exit(0)或killProcess退出;但如果你开了多个Activity,没有管理员权限则无法主动退出的(我是在2.3的Android系统上试的)。特别纠结于假退出的开发人员,可考虑用这个根Activity强制结束的方式退出,但这种破坏性的操作显然是不被推荐的,说不定高版本的SDK会屏蔽这个方法。
所以结论就是,假退出是正常行为,是国际惯例,正常的假退出并非流氓行为。我们应该是理直气壮的假退出,没必要为小白们说几句就为假退出感到纠结和惭愧。