1

通常在 java 中,对象是通过它们的引用值传递的。因此,如果我OBJ在 address有对象,addr则该对象由 address 的值传递addr。但是最近我在 Stack Overflow 上读到(如何将位图对象从一个活动传递到另一个活动),通过意图传递位图是昂贵的。这是部分引用:

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

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

4

1 回答 1

0

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

于 2013-03-13T18:57:06.283 回答