android ImageView 频繁切换图片 OOM
2013-01-30 23:14
232 查看
最近在帮一个朋友写一个android 软件,频繁的用ImageView 更换图片。
结果常常出现OOM
后来修改把ImageView加载图片自己来管理,问题解决了,不敢独享,拿出来与各位同学分享
private void showImage(int index) {
int resid = R.drawable.circle_01;
switch (index) {
case 1:
resid = R.drawable.circle_01;
break;
case 2:
resid = R.drawable.circle_02;
break;
case 3:
resid = R.drawable.circle_03;
break;
case 4:
resid = R.drawable.circle_04;
break;
case 5:
resid = R.drawable.circle_05;
break;
case 6:
resid = R.drawable.circle_06;
break;
case 7:
resid = R.drawable.circle_07;
break;
case 8:
resid = R.drawable.circle_08;
break;
case 9:
resid = R.drawable.circle_09;
break;
case 10:
resid = R.drawable.circle_10;
break;
case 11:
resid = R.drawable.circle_11;
break;
case 12:
resid = R.drawable.circle_12;
break;
}
//把历史的ImageView 图片对象(image_)释放
BitmapDrawable bitmapDrawable = (BitmapDrawable)image_.getBackground();
if(bitmapDrawable!=null){
Bitmap hisBitmap = bitmapDrawable.getBitmap();
if(hisBitmap.isRecycled()==false)
{
hisBitmap.recycle();
}
}
//上面的代码一定要做,否则不会超过30分钟可定会出现exit,当然我的timer设置的时间比较短。。。。。timer.schedule(task, 5, 5);
//下面代码是网上通常搜到的源码例子,但是不能解决,智能优化,只有加上上面的才能彻底解决内存的问题。
BitmapFactory.Options options =
new BitmapFactory.Options();
options.inPurgeable =
true; // bitmap can be purged to disk
options.inInputShareable =
true;
Bitmap bm = BitmapFactory.decodeStream(getResources().openRawResource(
resid));
Drawable bd = new BitmapDrawable(getResources(), bm);
image_.setBackgroundDrawable(bd);
}
结果常常出现OOM
后来修改把ImageView加载图片自己来管理,问题解决了,不敢独享,拿出来与各位同学分享
private void showImage(int index) {
int resid = R.drawable.circle_01;
switch (index) {
case 1:
resid = R.drawable.circle_01;
break;
case 2:
resid = R.drawable.circle_02;
break;
case 3:
resid = R.drawable.circle_03;
break;
case 4:
resid = R.drawable.circle_04;
break;
case 5:
resid = R.drawable.circle_05;
break;
case 6:
resid = R.drawable.circle_06;
break;
case 7:
resid = R.drawable.circle_07;
break;
case 8:
resid = R.drawable.circle_08;
break;
case 9:
resid = R.drawable.circle_09;
break;
case 10:
resid = R.drawable.circle_10;
break;
case 11:
resid = R.drawable.circle_11;
break;
case 12:
resid = R.drawable.circle_12;
break;
}
//把历史的ImageView 图片对象(image_)释放
BitmapDrawable bitmapDrawable = (BitmapDrawable)image_.getBackground();
if(bitmapDrawable!=null){
Bitmap hisBitmap = bitmapDrawable.getBitmap();
if(hisBitmap.isRecycled()==false)
{
hisBitmap.recycle();
}
}
//上面的代码一定要做,否则不会超过30分钟可定会出现exit,当然我的timer设置的时间比较短。。。。。timer.schedule(task, 5, 5);
//下面代码是网上通常搜到的源码例子,但是不能解决,智能优化,只有加上上面的才能彻底解决内存的问题。
BitmapFactory.Options options =
new BitmapFactory.Options();
options.inPurgeable =
true; // bitmap can be purged to disk
options.inInputShareable =
true;
Bitmap bm = BitmapFactory.decodeStream(getResources().openRawResource(
resid));
Drawable bd = new BitmapDrawable(getResources(), bm);
image_.setBackgroundDrawable(bd);
}
相关文章推荐
- Android之---ImagView显示图片(将一张图片按原图大小合理显示在imageView上,避免OOM)
- android ImageView 通过level-list 切换图片
- Android 控件之ImageViewSwitcher图片切换控件
- Android第三方框架universal-image-loader[图片缓存加载]及其OOM问题处理【常用】,CardView使用[给列表中项+边框]
- android之【代码实现ImageView图片切换】
- Android中使用ImageViewSwitcher实现图片切换轮播导航效果
- Android ImageView——图片切换
- Android中使用imageviewswitcher 实现图片切换轮播导航的方法
- Android中使用ImageViewSwitcher实现图片切换轮播导航效果
- Android中点击button,实现ImageView中图片的循环切换
- Android ImageView实现图片切换
- Android自定义ImageView实现点击两张图片切换效果
- 【Android】 ImageView 图片切换效果
- Android 自定义 ViewPager 打造千变万化的图片切换效果
- Android用ImageView显示本地和网上的图片(转)
- Android中 在显示ImageView时图片上面和下面都出现一段空白区间的解决办法
- Android 调用用相机拍照保存在本地,imageview根据路径读取图片
- android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte
- Android 中使用ImageView实现播放Gif图片功能
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果