【问题标题】:FAILED BINDER TRANSACTION with both bitmap or bytearray位图或字节数组的 BINDER TRANSACTION 失败
【发布时间】:2018-07-13 12:57:12
【问题描述】:

首先,我尝试使用 Bitmap 在 Activity 之间传递一个大图像文件,但收到以下错误:

E/JavaBinder: !!! Binder 交易失败!!! (包裹大小=6560360)

我在 SO 上阅读了一个解决方案,首先将 Bitmap 转换为字节数组,所以我尝试了一下:

第一个活动

ByteArrayOutputStream stream = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

Intent i = new Intent(getApplicationContext(), SecondActivity.class);
i.putExtra("photo",byteArray);
startActivity(i);

第二个活动

byte[] byteArray = getIntent().getByteArrayExtra("photo");
Bitmap loopPhotoBackground = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

但这给出了同样的错误。如何在活动之间传递图像数据?

【问题讨论】:

    标签: android bitmap


    【解决方案1】:

    如何在活动之间传递图像数据?

    你没有。要么:

    • 这些应该组合成一个活动,或者

    • 你应该有某种图像缓存,两个活动共享,你将标识符传递给缓存条目

    【讨论】:

    • 你可以告诉我要实现哪种类型的缓存?
    • @Donato:我不知道图片来自哪里。如果图像来自磁盘或网络,希望您使用的是图像加载库(Glide、Picasso 等),并且它们具有集成缓存。
    • 我不认为组合活动是一个好主意,因为如果我要使用片段,仍然很难。这就像具有多个需要返回按钮的步骤的向导。
    • @Donato:“这就像具有多个需要返回按钮的步骤的向导”——在单个活动中使用ViewPagerRecyclerView。或者,使用该 UI 模式的现有库,它们本身将在单个活动中使用 ViewPagerRecyclerView
    猜你喜欢
    • 2018-04-23
    • 2015-09-16
    • 1970-01-01
    • 2016-06-13
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    相关资源
    最近更新 更多