2013-03-13 55 views
1

通常在java中,对象通过引用的值传递。因此,如果我在地址addr处有对象OBJ,则该对象将通过地址addr的值传递。但最近我读到堆栈溢出(How can I pass a Bitmap object from one activity to another),通过意图传递位图是昂贵的。下面是部分报价:当android通过意图传递对象时,它通过值或引用的值完成

如果位图作为文件形式存在或资源,它始终是更好地 通过URI或位图的资源ID,而不是位图本身。 传递整个位图需要大量内存。

那么,为什么位图对象不被其引用的值传递呢?

回答

0

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