Android---OnTrimMemory优化
来源:互联网 发布:时时彩两期计划软件 编辑:程序博客网 时间:2024/04/29 22:32
一:概述:
OnTrimMemory是android4.0以后提供的一个Api,它的主要作用是提示开发者在内存不足的时候去释放资源,从而避免被系统杀死,这样应用在下一次启动的时候,速度会比较快(如果不被杀掉,启动的时候就是热启动,否则就是冷启动,速度相差2-3倍)。
二: 任何实现了ComponentCallbacks2接口的类都可以重新实现这个方法(Application,Activity,Fragment,Service,ContentProvider), Android系统会根据不同等级的内存使用情况,调用这个函数,并传入响应的等级,一共7个等级
1.1 第一个等级(当用户按下Home键或者back键导致ui界面不可变) :
TRIM_MEMORY_UI_HIDDEN 表示应用程序的 所有UI界面 被隐藏了,即用户点击了Home键或者Back键导致应用的UI界面不可见.这时候应该释放一些资源 (这个等级需要在onStop()之前调用)
1.2 第二,三,四等级(这三个等级是当我们的应用程序真正运行时的回掉):
TRIM_MEMORY_RUNNING_MODERATE 表示应用程序正常运行,并且不会被杀掉。但是目前手机的内存已经有点低了,系统可能会开始根据LRU缓存规则来去杀死进程了。
TRIM_MEMORY_RUNNING_LOW 表示应用程序正常运行,并且不会被杀掉。但是目前手机的内存已经非常低了,我们应该去释放掉一些不必要的资 源以提升系统的性能,同时这也会直接影响到我们应用程序的性能。
TRIM_MEMORY_RUNNING_CRITICAL 表示应用程序仍然正常运行,但是系统已经根据LRU缓存规则杀掉了大部分缓存的进程了。这个时候我们应当尽可能地去释放任何不必要的资源,不然的话系统可能会继续杀掉所有缓存中的进程,并且开始杀掉一些本来应当保持运行的进程,比如说后台运行的服务。
1.3第五,六,七等级(当应用程序是缓存的)
TRIM_MEMORY_BACKGROUND 表示手机目前内存已经很低了,系统准备开始根据LRU缓存来清理进程。这个时候我们的程序在LRU缓存列表的最近位置,是不太可能被清理掉的,但这时去释放掉一些比较容易恢复的资源能够让手机的内存变得比较充足,从而让我们的程序更长时间地保留在缓存当中,这样当用户返回我们的程序时会感觉非常顺畅,而不是经历了一次重新启动的过程。
TRIM_MEMORY_MODERATE 表示手机目前内存已经很低了,并且我们的程序处于LRU缓存列表的中间位置,如果手机内存还得不到进一步释放的话,那么我们的程序就有被系统杀掉的风险了。
TRIM_MEMORY_COMPLETE 表示手机目前内存已经很低了,并且我们的程序处于LRU缓存列表的最边缘位置,系统会最优先考虑杀掉我们的应用程序,在这个时候应当尽可能地把一切可以释放的东西都进行释放。
三:我们都可以清除一些类似于缓存,view等一些占用内存的东西
0 0
- Android内存优化-OnTrimMemory
- Android---OnTrimMemory优化
- Android内存优化--onTrimMemory
- Android 内存onLowMemory& onTrimMemory优化
- Android代码内存优化建议-OnTrimMemory优化
- Android代码内存优化建议-OnTrimMemory优化
- Android代码内存优化建议-OnTrimMemory优化
- Android代码内存优化建议-OnTrimMemory优化
- Android代码内存优化建议-OnTrimMemory优化
- Android代码内存优化建议-OnTrimMemory优化
- Android代码内存优化建议-OnTrimMemory优化
- OnTrimMemory优化
- android 应用内存优化之OnLowMemory&OnTrimMemory
- Android代码内存优化建议-OnTrimMemory优化01
- 性能优化-OnTrimMemory
- Android OnLowMemory和OnTrimMemory
- Android OnLowMemory和OnTrimMemory
- Android OnLowMemory和OnTrimMemory
- R语言 变量的操作函数
- Unity 5 physX CPU 水印去除
- ES6新特性概览
- 安装maven时安照说明配置环境变量JAVA_HOME
- Windows 下 配置 ngrok ngrok使用教程
- Android---OnTrimMemory优化
- Jetty源码分析
- Classifying with K-Nearest Neighbors
- 数字格式化
- srilm建立语言模型
- 预加载时的进度条
- BZOJ3545: [ONTAK2010]Peaks(线段树合并)
- SQL语言中where和having有什么区别?
- Probability Integral Transform