Android:我遇到的OOM以及解决方法
来源:互联网 发布:swfobject.js 官网 编辑:程序博客网 时间:2024/05/17 22:29
这几天做一个界面的时候遇到了OOM问题;
要解决首先就要知道什么原因可以导致OOM;
1.内存泄露。
2.加载图片内存溢出。
我是因为要做下面这个界面
这是需要要加载很多张图片在一个界面中。
所以我的问题主要是在加载图片溢出
所以解决思路主要是从改变一张图片的占用内存的大小来解决
Android 中一张图片的占用内存主要是和长度,宽度,单位像素所占的字节数有关
内存 = 图片长度 * 图片宽度 * 单位像素占用的字节数;
所以可以通过改变他的长宽或者改变单位像素来解决
我使用的是改变单位像素占用的字节数来控制内存。
创建一个BitMap时,其单位像素占用的字节数由其参数 BitmapFactory.Options 的 inPreferredConfig 变量决定。
inPreferredConfig为 Bitmap.Config 类型, Bitmap.Config 类 是个枚举类型,我从网上荡了一张这个图:
ARGB代表的意思分别是
A:透明度
RGB就是三原色
所以我们可以通过改变这个枚举变量来达到减少占用内存的目的。
我就是使用这个出发点解决了OOM问题;
我解决的代码:
public static Bitmap readBitMap(Context context, int resId) { BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565;//决定单位像素占用的字节数 //Bitmap.config 是一个枚举类型 //设置色彩使得图片占用内存变少 opt.inPurgeable = true; // 如果 inPurgeable 设为True的话表示使用BitmapFactory创建的Bitmap 而且当系统内存不够的时候ture表示 //允许把这快内存擦除 opt.inInputShareable = true;//获取资源图片 InputStream is = context.getResources().openRawResource(resId); return BitmapFactory.decodeStream(is, null, opt);//不会根据机器的分辨率来自动适应 //Bitmap占用内存的算法 //图片的width*height*Config 长 宽 单位像素占用的字节数 }
以上由加载图片太多而产生的OOM问题就解决了。
以下是一些别的东西我也没太搞懂…….
据说这里的Bitmap占用的是Native层的内存
VM把内存分成了两块一块是java一块就是native 这两块的内存不能共享。
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信
可以搞一些动态链接库来提高效率 可是 百度有很多怎么写我一个也没有写过所以不太清楚
不过观察一下jdk目录下有一个include文件夹
里面放的都是.h文件 应该这里就用了这个吧。应该就和native有点关系了 大概就知道这些
后面这一点我在说什么我也不知道
以上 over!
- Android:我遇到的OOM以及解决方法
- 【Android】android开发过程遇到的问题以及解决方法总结
- android开发 - OOM 简单 的 解决方法
- Android 逐帧动画OOM的解决方法
- Android OOM的原因及解决方法
- 配置JBox2D for android遇到的问题以及解决方法
- Android开发当中遇到的各种error以及解决方法
- android 开发中经常遇到的错误以及解决方法
- Eclipse开发Android应用时遇到的问题以及解决方法
- android studio 升级常遇到的问题以及解决方法
- Android Studio 使用中遇到的一些问题以及解决方法
- ubantu17.04 编译android 遇到的问题以及解决方法
- Android OOM以及GC的一些建议
- openGl oom的解决方法
- Android-Universal-Image-Loader 使用遇到的oom问题
- android 加载图片oom的好的解决方法
- 今天遇到的几个问题以及解决方法
- 学习中遇到的问题以及解决方法
- innobackupex恢复操作解压备份文件报错一例
- HDU3999-The order of a Tree
- matlab膨胀和腐蚀的案例详解
- WERTYU
- Java数组操作的疑惑(这篇错误,后来才知道是有static修饰的结果)
- Android:我遇到的OOM以及解决方法
- spring 源码如何导入到eclipse
- Android的5种布局
- UILabel 中文本的多样式显示
- 算法导论-KMP
- rehctiwSbluB.319
- Android批量加载网络图片存在的问题及简单实现
- 定义一个Activity类型的dialog
- Android广告轮播图添加标题及点击事件