【问题标题】:Passing bitmap to other activity getting message on logcat FAILED BINDER TRANSACTION将位图传递给其他活动,在 logcat FAILED BINDER TRANSACTION 上获取消息
【发布时间】:2013-03-20 06:55:49
【问题描述】:

当我将位图图像传递给其他活动时,我会在 logcat as-上获得 mag-

 03-20 12:06:56.553: E/JavaBinder(280): !!! FAILED BINDER TRANSACTION !!!

大尺寸图像会发生这种情况。小尺寸图像效果很好。 我该怎么办?请帮助我。提前谢谢。

我在这里传递数据-

Drawable drbl=_imageView.getDrawable();
    int imageh=_imageView.getHeight();
    int imagew=_imageView.getWidth();
    Bitmap bit = ((BitmapDrawable)drbl).getBitmap();
    intent.putExtra("Image_Height", imageh);
    intent.putExtra("Image_Width", imagew);
    intent.putExtra("Bitmap",bit);
    startActivityForResult(intent, 2);

【问题讨论】:

  • 请不要额外添加位图......携带这么多数据不是一个好方法。保存位图的某种静态引用,使用后回收。
  • 或者将位图保存为文件,然后重新使用,这将是 ATM 的最佳方法。
  • 是存储在 sdcard 中的位图。您可以传递位图的路径并使用该路径在第二个活动中检索它。
  • 我应该怎么做?因为我正在对位图进行一些更改(如画布绘图),所以只有我在下一个活动中传递了位图,
  • stackoverflow.com/questions/8255123/…。这已经在 SO 上讨论过很多次了

标签: android android-activity bitmapimage


【解决方案1】:

将这么多的数据放在extras中并不是一个好方法。最简单的解决方法是保留新位图的静态引用

public static Bitmap getBitmap(Bitmap changeBitmap){
return bitmap;
} 

使用它后,以这种方式回收它。

if(changedBitmap!=origanlBitmap)
orignalBitmap.recycle();

【讨论】:

  • 我试过这个。但它仍然适用于小图像而不是大图像。
  • 只需尝试静态位图 bit = ((BitmapDrawable)drbl).getBitmap();并在您的其他活动中通过 Bitmap newBit=previousactivity.bit; 获取该位图
  • 我为评论投了票只需尝试 static Bitmap bit = ((BitmapDrawable)drbl).getBitmap();并在您的其他活动中通过 Bitmap newBit=previousactivity.bit; 获取该位图;因为它的工作原理不是上面的 getbitmap 方法
  • 抱歉错过了那部分。谢谢
猜你喜欢
  • 1970-01-01
  • 2014-10-20
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
相关资源
最近更新 更多