1.OnLowMemory
是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进程,不是指后台运行的进程)都被杀死时,系统会调用OnLowMemory。
系统提供的回调有:Application/Activity/Fragementice/Service/ContentProvider
2.OnTrimMemory
OnTrimMemory是Android 4.0之后提供的API,系统会根据不同的内存状态来回调。系统提供的回调有:Application/Activity/Fragement/Service/ContentProvider
OnTrimMemory的参数是一个int数值,代表不同的内存状态:
以上4个是4.0增加
系统也提供了一个ComponentCallbacks2,通过Context.registerComponentCallbacks()注册后,就会被系统回调到。
OnLowMemory和OnTrimMemory的比较
1,OnLowMemory被回调时,已经没有后台进程;而onTrimMemory被回调时,还有后台进程。 2,OnLowMemory是在最后一个后台进程被杀时调用,一般情况是low memory killer 杀进程后触发;而OnTrimMemory的触发更频繁,每次计算进程优先级时,只要满足条件,都会触发。 3,通过一键清理后,OnLowMemory不会被触发,而OnTrimMemory会被触发一次。