Android之常见异常总结--OOM --解决办法
2015-04-22 10:28
253 查看
看过其他大神写过关于OOM的文章,总感觉不是自己想要的,跟自己想的不能串联起来。所以就自己总结了一下,仅供博友们参考!!
我认为大概需要搞定一下两方面足以:
BitmapFactory.Options参数,将这个参数的inJustDecodeBounds属性设置为true,
1. 只填加图片的宽高属性得到options,然后 options.inJustDecodeBounds = false;
2. return BitmapFactory.decodeResource(res, resId, options);
1、始终从cache中去取Bitmap,如果取到Bitmap(如果找到了相应的键值),就直接把这个Bitmap设置到ImageView上面。
2、如果缓存中不存在,那么启动一个task去加载(可能从文件来,也可能从网络)。
1、 onPreExecute():在UI线程里面调用,它在这个task执行后会立即调用。
2、 doInBackground(Params...):这个方法从名字就可以看出,它是运行在后台线程的,在这个方法里面,去做耗时的事情,比如下载访问网络,操作文件等。
3、 onPostExecute(Result):当task结束后调用,它运行在UI线程。
。这个类非常适合用来缓存图片,它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap
中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除。添加一个Bitmap方法和getBitmap()
GC”按钮
我认为大概需要搞定一下两方面足以:
一、加载大图片的时候要压缩
获取屏幕大小、只加载图片信息、计算压缩比--图像/屏幕、压缩图片显示BitmapFactory.Options参数,将这个参数的inJustDecodeBounds属性设置为true,
1. 只填加图片的宽高属性得到options,然后 options.inJustDecodeBounds = false;
2. return BitmapFactory.decodeResource(res, resId, options);
二、使用图片缓存技术
思路:1、始终从cache中去取Bitmap,如果取到Bitmap(如果找到了相应的键值),就直接把这个Bitmap设置到ImageView上面。
2、如果缓存中不存在,那么启动一个task去加载(可能从文件来,也可能从网络)。
1、 AsyncTask<>
这个类也是一个很重要也很常用的类。它封装了Thread和Handler、内部也是用到了线程池,我们使用就更加方便,不用关注Handler。1、 onPreExecute():在UI线程里面调用,它在这个task执行后会立即调用。
2、 doInBackground(Params...):这个方法从名字就可以看出,它是运行在后台线程的,在这个方法里面,去做耗时的事情,比如下载访问网络,操作文件等。
3、 onPostExecute(Result):当task结束后调用,它运行在UI线程。
2、 LruCache
(此类在android-support-v4的包中提供)。这个类非常适合用来缓存图片,它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap
中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除。添加一个Bitmap方法和getBitmap()
3、内存泄漏怎么检查
OOM调试:DDMSàheapà点击选中想要监测的进程à点击Heap视图中的“CauseGC”按钮
相关文章推荐
- 【Android】常见异常 —— android.view.WindowLeaked 分析以及解决办法
- 【Android】常见异常 —— android.view.WindowLeaked 分析以及解决办法
- Android OOM出现常见原因及解决办法
- Android Eclipse工程开发中的常见调试问题(二)android.os.NetworkOnMainThreadException 异常的解决办法
- 【Android杂谈】图片出现OOM解决办法总结
- android 内存泄漏篇——OOM问题的解决办法总结
- 1.Android常见异常:android.view.WindowLeaked 分析以及解决办法
- Android OOM出现常见原因及解决办法
- Android 常见 Memory Leak 原因及解决办法总结
- Android 常见异常及解决办法
- Android中常见的内存泄漏问题及解决办法
- Android 开发中比较常见的5个内存泄漏问题及解决办法
- Android 7.0 出现 ”FileUriExposedException“ 和 ”解析包出现错误“ 异常的解决办法
- android ANR产生原因(三总常见类型)和解决办法
- 5 个 Android 开发中比较常见的内存泄漏问题及解决办法
- [置顶] 常见的异常产生的原因和解决办法
- 工作总结 EntityFramework中出现DateTime2异常的完美解决办法
- Android HttpURLConnection.connect找不到源 HttpURLConnection连接失败 HttpURLConnection.connect IO异常 解决办法
- android使用磁场传感器和加速度传感器确定当前朝向(即:方位角),以及常见问题的解决办法
- 5个Android开发中比较常见的内存泄漏问题及解决办法