Android 内存优化实例
2016-03-09 13:55
435 查看
下面来看两个内存优化的实例,分别从bitmap和代码两个角度来对内存进行优化。
1.bitmap优化
bitmap是造成内存占用过度甚至是OOM(out of memory)的最大威胁。下面给出一些使用bitmap的小技巧。
1).使用适当分辨率和大小的图片
由于android系统在做资源分配的时候会对不同分辨率文件夹下的图片进行缩放来适配相应的分辨率,如果图片的分辨率与资源文件夹分辨率不匹配或者图片分辨率太高,就会导致系统消耗更多的内存资源。同时在适当的时候,应该显示合适大小的图片,列如在图片列表页可以使用图片的缩略图,而在显示详细图片的时候在显示原图,或者在对图像要求不是很高的情况下,尽量降低图片的精度。
2).及时回收内存
一旦使用完bitmap后,一定要及时使用bitmap.recycle()方法释放内存资源,自安卓3.0后,由于bitmap被放置在了堆中,其内存由gc管理,就不需要进行释放了。
3).使用图片缓存
通过使用内存缓存和硬盘缓存可以更好的使用bitmap。
2.代码优化
任何java类,都将占用大约500字节的空间。创建一个类的实例会消耗大约15字节的内存。从代码的实现方式上,也可以对内存进行优化,这里同样也总结了一些小的技巧。
1,对常量使用static修饰
2,使用静态方法,静态方法会比普通方法提高15%的访问速度。
3,减少不必要的成员变量,这点在Android lint工具上已经集成检测了,如果一个变量可以定义为局部变量,则会建议你不要定义为成员变量。
4,减少不必要的对象,使用基础类型会比使用对象更加节省资源,同时更应该避免频繁创建短作用域的变量。
5,尽量不要使用枚举,少用迭代器。
6,使用surfaceview来代替view进行大量,频繁的绘图操作。
1.bitmap优化
bitmap是造成内存占用过度甚至是OOM(out of memory)的最大威胁。下面给出一些使用bitmap的小技巧。
1).使用适当分辨率和大小的图片
由于android系统在做资源分配的时候会对不同分辨率文件夹下的图片进行缩放来适配相应的分辨率,如果图片的分辨率与资源文件夹分辨率不匹配或者图片分辨率太高,就会导致系统消耗更多的内存资源。同时在适当的时候,应该显示合适大小的图片,列如在图片列表页可以使用图片的缩略图,而在显示详细图片的时候在显示原图,或者在对图像要求不是很高的情况下,尽量降低图片的精度。
2).及时回收内存
一旦使用完bitmap后,一定要及时使用bitmap.recycle()方法释放内存资源,自安卓3.0后,由于bitmap被放置在了堆中,其内存由gc管理,就不需要进行释放了。
3).使用图片缓存
通过使用内存缓存和硬盘缓存可以更好的使用bitmap。
2.代码优化
任何java类,都将占用大约500字节的空间。创建一个类的实例会消耗大约15字节的内存。从代码的实现方式上,也可以对内存进行优化,这里同样也总结了一些小的技巧。
1,对常量使用static修饰
2,使用静态方法,静态方法会比普通方法提高15%的访问速度。
3,减少不必要的成员变量,这点在Android lint工具上已经集成检测了,如果一个变量可以定义为局部变量,则会建议你不要定义为成员变量。
4,减少不必要的对象,使用基础类型会比使用对象更加节省资源,同时更应该避免频繁创建短作用域的变量。
5,尽量不要使用枚举,少用迭代器。
6,使用surfaceview来代替view进行大量,频繁的绘图操作。
相关文章推荐
- 给android应用程序系统的签名
- Android跑马灯实现的三种方式
- Android常用组件
- EasyPusher安卓Android手机直播推送之MediaCodec 硬编码H264格式
- Android studio如何使用SVN进行版本控制?
- Android四大组件Broadcast Receiver详解
- android开发时怎样让图片充满屏幕
- Android Studio的技巧
- 阅读《Android 从入门到精通》(30)——字体
- android独有的省内存的轻量级容器类
- GitHub Top 100的Android开源库
- ANE总结(Android+iPhone)
- 关于 Android Handler 跟 Thread 通信交互的小实例,配备了 Demo 供初学/新手小伙伴参考
- Android 快速开发框架XUtils
- Android框架设计模式(一)——Template Methods
- Android触控基础:MotionEvent
- ANDROID 一键搞定JNI创建C头文件
- Android 日常开发总结的60条技术经验
- android V7 包导入
- Android自定义进度条