【问题标题】:How to send a Bitmap to another activity without saving it?如何在不保存的情况下将位图发送到另一个活动?
【发布时间】:2016-01-29 21:50:39
【问题描述】:

在活动 A 中,我使用 Picasso 下载图像并保存到位图中。我需要Activity B中的Bitmap,如何在不将图像保存到文件系统并且不发送位图的情况下将其发送到捆绑包中,因为它不是很有效?

编辑:是否可以使用资源 ID?如果有,怎么做?

【问题讨论】:

  • 如我所说,我不想发送位图本身。
  • “如何在不将图像保存到文件系统的情况下将其发送到捆绑包中” - 您可以将其以捆绑包的形式发送,而无需以这种方式将其保存到文件系统中。
  • "如何在不将图像保存到文件系统和不发送位图的情况下以捆绑包的形式发送它,因为它不是很有效?"
  • 我认为你的问题有点矛盾,也许编辑它:)无论如何,你可以做的是将位图保存在你的项目或 Application 类中的单例中,然后从另一个活动中获取它。虽然我会尝试看看首先将它传递到包中是否有问题。

标签: android bitmap bundle android-sdcard


【解决方案1】:

如果您不希望将 Bitmap 传递给 Bundle,您可以扩展 Application 类,并将位图存储/获取到/从它。但是,我要求您不要这样做,并考虑通过 Bundles 发送 Bitmap,因为将此类数据存储在 Application 类中比发送或存储在文件系统中的开销要糟糕得多。

【讨论】:

    【解决方案2】:

    Bitmap 实现Parcelable 接口。因此,您可以通过 bundle 传递它。 对于发送,

    Intent intent = new Intent(CallingActivity.this, CalledActivity.class);
    intent.putExtra("bitmap", bitmap);
    startActivity(intent);
    

    要检索它,

    Bitmap bitMap = getIntent().getParcelableExtra("bitmap");
    

    【讨论】:

    • 理论上应该可以,但是对于太大的位图,你可以得到E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!
    猜你喜欢
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多