首先吐槽下某米的手机,质量不错,去年这时候收到的,用到现在除了摄像头里进灰去售后免费修了一次之外,其他的都还好。
美中不足就在于其搭载的MIUI v5不能完全释放APQ8064T 2G内存的潜力,刚打开的程序,往往切换到后台之后没多久就被“终结”了,想再切换回去只能等待系统重新加载一遍应用。
我最开始怀疑是系统占用资源过多所致,但是每次查看内存,总还有700MB可用(这里MIUI的任务管理器和Android自带的应用管理器给出的结果不一致,MIUI给出的数值一般较小,但也有700MB)。而且手中那台老掉渣内存仅有1G的Moto Atrix即使放一夜也不会自动关掉你之前打开的程序,这就否定了内存不足这个猜测。
然后我转而怀疑是MIUI的进程管理自动关掉了空闲的后台程序。于是我在任务管理器里把所有进程都上了锁(就是长按HOME之后把App图标往下拉),之后自动关闭的情况虽然会好一些,但是仍不能完全根除。哪怕是占用内存很少的程序,比如设置等,闲置一段时间后仍然会被kill掉。
既然还是找不到幕后杀手,就只有查看Logcat,看看凶手有没有留下蛛丝马迹了。
经过一番搜索,Logcat给了我这些:
04-28 14:47:37.844: I/ActivityManager(597): No longer want com.cleanmaster.miui_module (pid 918): hidden #25
04-28 14:47:37.925: I/ActivityManager(597): No longer want com.miui.guardprovider (pid 1342): hidden #25
04-28 14:47:43.020: W/ExtraActivityManagerService(597): No longer want com.miui.networkassistant (pid 1823) for more free memory
04-28 14:47:43.020: I/ActivityManager(597): No longer want com.android.fileexplorer (pid 1805): hidden #25
可以看出是ActivityManager(或者更确切点,ActivityManagerService)和ExtraActivityManagerService两个家伙在不停地干掉我的后台程序。
Google之,试图找到已有的解决办法,结果仅有的几篇相关文章也没把问题的根本原因说明白,只是诸如“为什么我开发的程序在后台被关闭了”等等泛泛的讨论。
搜索无果后,我决定直接查看Android源码,