Android之常见异常总结--OOM --解决办法

看过其他大神写过关于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、 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视图中的“Cause GC”按钮


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值