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相关推荐

  1. android service onlowmemory,Android乱弹onLowMemory()和onTrimMemory()

    今天看郭哥的LitePal框架的源码,刚打开LitePalApplication里面的源码看到了这样一幕 @Override public void onLowMemory() { super.onL ...

  2. Android内存管理-OnTrimMemory

    Application中有两个与内存管理相关的方法:onLowMemory()和 onTrimMemory(int level),源码如下 1 @CallSuper 2 public void onL ...

  3. 安卓application生命周期的onCreate、onLowMemory、onTrimMemory、onConfigurationChanged

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓测试Application生命周期: application类为应用程序的创建和终止.低可用内存和配置改变提供了事件处理程序(如前面部分所述). ...

  4. android 低内存方法,android onLowMemory低内存回调方法详解

    onLowMemory方法顾名思义就是在app内存低的时候回调,那么怎样才是内存低的标准,回调流程又是如何?我们一起带着问题去看源代码解析. onLowMemory方法在Activity,Servie ...

  5. BAT等公司高薪招聘Android开发面试题目集锦

    整理过的50道面试题目 1.listView的优化方式 重用convertView viewHolder static class viewHolder 在列表里面有图片的情况下,监听滑动不加载图片 ...

  6. android 15K+面试题

    转载自:http://blog.csdn.net/cym492224103/article/details/38417927 andorid开发也做了3年有余了,也面试很多加企业,借此机会分享一下,我 ...

  7. android面试题目

    最近才开的博客,希望大家多多关注,andorid开发也做了3年有余了,也面试多家企业,借此机会分享一下,我们中遇到过的问题以及解决方案吧,希望能够对正在找工作的andoird程序员有一定的帮助.学完& ...

  8. Android 15k+面试题

    1.listView的优化方式 重用convertView viewHolder static class viewHolder 在列表里面有图片的情况下,监听滑动不加载图片 多个不同布局,可以创建不 ...

  9. android晋级面试题

    转载地址尊重原作者:http://blog.csdn.net/cym492224103/article/details/38417927 最近才开的博客,希望大家多多关注,andorid开发也做了3年 ...

最新文章

  1. 步步为营:Asp.Net 淘宝通用应用接口攻略
  2. Tesla超越谷歌无人驾驶汽车雄心的背后,是以色列公司Mobileye
  3. mysql metadata lock(一)
  4. maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
  5. 全球及中国矢量超导磁体行业“十四五”竞争状况及投资前景策略分析报告2021-2027年版
  6. SemEval-2022组队参赛啦!八节课带你入门全球最大的语义测评大赛
  7. Scott Mitchell 的ASP.NET 2.0数据教程之三十八:: 处理BLL和DAL的异常
  8. 2017西安交大ACM小学期数据结构 [树状数组 离散化]
  9. 互联网晚报 | 8月10日 星期二 | 携程启动“2021混合办公试验”;网易云音乐暂缓IPO;上汽通用五菱年累销量突破百万...
  10. Linux 命令(119)—— diff 命令
  11. 百度开源移动端深度学习框架mobile-deep-learning(MDL)
  12. Linux cache清理
  13. 语料库的获取与词频分析
  14. pdf文档统计字数的问题
  15. 伊利诺伊香槟分校计算机排名,2019伊利诺伊大学香槟分校排名(USNews排名)
  16. python迷宫问题代码_Python解决走迷宫问题算法示例
  17. asa 防火墙拦截了https_思科ASA防火墙下抓包方法
  18. 未缓存的IPv6路由项链表
  19. Android adb使用总结记录
  20. Unity 物理效果插件OBI使用记录,包含OBI-Rope绳索,OBI-Fluid,OBI-Cloth

热门文章

  1. ylbtech-Bill(发票管理)-数据库设计
  2. servlet exception
  3. WCF存储图片到指定文件夹下
  4. 简单脚本之显示系统当前的一些信息
  5. 安全上下文以及FACL
  6. 关于mysql文件的.frm文件的导入
  7. DataSet DataTable DataReader DataAdapter之间的区别
  8. PetShop 4.0知识点:base 关键字用于从派生类中访问基类的成员
  9. JDK 5.0 中的泛型类型学习
  10. Nginx图片防盗链、缓存和压缩的示例