【问题标题】:When android passes objects by intent is it done by value or by value of reference当android通过意图传递对象时,它是按值还是按引用值完成
【发布时间】:2013-03-13 18:45:14
【问题描述】:

通常在 java 中,对象通过其引用的值传递。因此,如果我在地址addr 处有对象OBJ,那么该对象将通过地址addr 的值传递。但最近我在 Stack Overflow (How can I pass a Bitmap object from one activity to another) 上读到,通过意图传递位图非常昂贵。以下是部分引用:

如果位图作为文件或资源存在,它总是更好 传递位图的 URI 或 ResourceID,而不是位图本身。 传递整个位图需要大量内存。

那么为什么位图对象没有被它的引用值传递呢?

【问题讨论】:

    标签: java android oop object


    【解决方案1】:

    因为意图的目标可能不在同一个应用程序中。您不能将引用从一个应用程序传递到另一个应用程序,因为它们不共享内存。你可以通过序列化来解决这个问题,但这在两端都需要大量的时间和内存。 Intent 的接口是在考虑到这一点的情况下编写的,因此它不允许将对象添加到 Bundle 中,除了某些实现可序列化的简单类型或对象(Bitmap 可能,但通过 Intent 传递它会占用那么大的内存/时间使用)。

    【讨论】:

      猜你喜欢
      • 2015-06-12
      • 2019-04-04
      • 1970-01-01
      • 2016-11-28
      • 2017-11-14
      相关资源
      最近更新 更多