各位大神:
情况是这样的,应用长时间切后台,会被系统杀掉,然而系统会记住被杀死时的那个activity,而因为上下文所有变量已经丢失,如果单纯新建这样一个activity也是没有太大意义的,所以我的思路是:希望在系统杀死当前进程之前可以捕获到消息,然后在当前应用生命周期内,主动将自己杀死,这样就相当于主动退出应用,下次进来就是重新进入了。
查阅相关资料,Android本身提供一些方法,onLowMemory和onTrimMemory方法,但是onLowMemory是杀死之后才会通知,这样也就没有意义,onTrimMemory是4.0之后给出的方法,通过区分level来通知应用当前系统内存对当前应用的一些即将进行的动作(比如马上回收)。
TRIM_MEMORY_COMPLETE:内存不足,并且该进程在后台进程列表最后一个,马上就要被清理
TRIM_MEMORY_MODERATE:内存不足,并且该进程在后台进程列表的中部。
TRIM_MEMORY_BACKGROUND:内存不足,并且该进程是后台进程。
TRIM_MEMORY_UI_HIDDEN:内存不足,并且该进程的UI已经不可见了。
应该使用TRIM_MEMORY_COMPLETE,但我尝试了,如果在application中复写此方法,当虚拟机反馈TRIM_MEMORY_COMPLETE时,时机不是很准确,有时候进程还没有即将被回收,就已经收到这个level了,所有我没有了思路。
可能我的思路本身就不是对的,希望各位大神给出建议,帮助我解决这个问题,由衷感谢!