Android OnLowMemory和OnTrimMemory
1. OnLowMemory
OnLowMemory是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进程,不是指后台运行的进程)都被杀死时,系统会调用OnLowMemory。系统提供的回调有:Application/Activity/Fragementice/Service/ContentProvider
除了上述系统提供的API,还可以自己实现ComponentCallbacks,通过API注册,这样也能得到OnLowMemory回调。例如:
publicstaticclass MyCallback implements ComponentCallbacks {
@Override
public void onConfigurationChanged(Configuration arg) {
}
@Override
public void onLowMemory() {
//do release operation
}
}
然后,通过Context.registerComponentCallbacks ()在合适的时候注册回调就可以了。通过这种自定义的方法,可以在很多地方注册回调,而不需要局限于系统提供的组件。
2. OnTrimMemory
OnTrimMemory是Android 4.0之后提供的API,系统会根据不同的内存状态来回调。系统提供的回调有:Application/Activity/Fragement/Service/ContentProvider
OnTrimMemory的参数是一个int数值,代表不同的内存状态:
TRIM_MEMORY_COMPLETE:内存不足,并且该进程在后台进程列表最后一个,马上就要被清理
TRIM_MEMORY_MODERATE:内存不足,并且该进程在后台进程列表的中部。
TRIM_MEMORY_BACKGROUND:内存不足,并且该进程是后台进程。
TRIM_MEMORY_UI_HIDDEN:内存不足,并且该进程的UI已经不可见了。
以上4个是4.0增加
TRIM_MEMORY_RUNNING_CRITICAL:内存不足(后台进程不足3个),并且该进程优先级比较高,需要清理内存
TRIM_MEMORY_RUNNING_LOW:内存不足(后台进程不足5个),并且该进程优先级比较高,需要清理内存
TRIM_MEMORY_RUNNING_MODERATE:内存不足(后台进程超过5个),并且该进程优先级比较高,需要清理内存
以上3个是4.1增加
系统也提供了一个ComponentCallbacks2,通过Context.registerComponentCallbacks()注册后,就会被系统回调到。
OnLowMemory和OnTrimMemory的比较
1,OnLowMemory被回调时,已经没有后台进程;而onTrimMemory被回调时,还有后台进程。
2,OnLowMemory是在最后一个后台进程被杀时调用,一般情况是low memory killer 杀进程后触发;而OnTrimMemory的触发更频繁,每次计算进程优先级时,只要满足条件,都会触发。
3,通过一键清理后,OnLowMemory不会被触发,而OnTrimMemory会被触发一次。
Android OnLowMemory和OnTrimMemory相关推荐
- android service onlowmemory,Android乱弹onLowMemory()和onTrimMemory()
今天看郭哥的LitePal框架的源码,刚打开LitePalApplication里面的源码看到了这样一幕 @Override public void onLowMemory() { super.onL ...
- Android内存管理-OnTrimMemory
Application中有两个与内存管理相关的方法:onLowMemory()和 onTrimMemory(int level),源码如下 1 @CallSuper 2 public void onL ...
- 安卓application生命周期的onCreate、onLowMemory、onTrimMemory、onConfigurationChanged
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓测试Application生命周期: application类为应用程序的创建和终止.低可用内存和配置改变提供了事件处理程序(如前面部分所述). ...
- android 低内存方法,android onLowMemory低内存回调方法详解
onLowMemory方法顾名思义就是在app内存低的时候回调,那么怎样才是内存低的标准,回调流程又是如何?我们一起带着问题去看源代码解析. onLowMemory方法在Activity,Servie ...
- BAT等公司高薪招聘Android开发面试题目集锦
整理过的50道面试题目 1.listView的优化方式 重用convertView viewHolder static class viewHolder 在列表里面有图片的情况下,监听滑动不加载图片 ...
- android 15K+面试题
转载自:http://blog.csdn.net/cym492224103/article/details/38417927 andorid开发也做了3年有余了,也面试很多加企业,借此机会分享一下,我 ...
- android面试题目
最近才开的博客,希望大家多多关注,andorid开发也做了3年有余了,也面试多家企业,借此机会分享一下,我们中遇到过的问题以及解决方案吧,希望能够对正在找工作的andoird程序员有一定的帮助.学完& ...
- Android 15k+面试题
1.listView的优化方式 重用convertView viewHolder static class viewHolder 在列表里面有图片的情况下,监听滑动不加载图片 多个不同布局,可以创建不 ...
- android晋级面试题
转载地址尊重原作者:http://blog.csdn.net/cym492224103/article/details/38417927 最近才开的博客,希望大家多多关注,andorid开发也做了3年 ...
最新文章
- 步步为营:Asp.Net 淘宝通用应用接口攻略
- Tesla超越谷歌无人驾驶汽车雄心的背后,是以色列公司Mobileye
- mysql metadata lock(一)
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- 全球及中国矢量超导磁体行业“十四五”竞争状况及投资前景策略分析报告2021-2027年版
- SemEval-2022组队参赛啦!八节课带你入门全球最大的语义测评大赛
- Scott Mitchell 的ASP.NET 2.0数据教程之三十八:: 处理BLL和DAL的异常
- 2017西安交大ACM小学期数据结构 [树状数组 离散化]
- 互联网晚报 | 8月10日 星期二 | 携程启动“2021混合办公试验”;网易云音乐暂缓IPO;上汽通用五菱年累销量突破百万...
- Linux 命令(119)—— diff 命令
- 百度开源移动端深度学习框架mobile-deep-learning(MDL)
- Linux cache清理
- 语料库的获取与词频分析
- pdf文档统计字数的问题
- 伊利诺伊香槟分校计算机排名,2019伊利诺伊大学香槟分校排名(USNews排名)
- python迷宫问题代码_Python解决走迷宫问题算法示例
- asa 防火墙拦截了https_思科ASA防火墙下抓包方法
- 未缓存的IPv6路由项链表
- Android adb使用总结记录
- Unity 物理效果插件OBI使用记录,包含OBI-Rope绳索,OBI-Fluid,OBI-Cloth