当android通过intent传递对象时,它是通过值或引用值来完成的

时间:2013-03-13 18:45:15

标签: java android oop object

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

  

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

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

1 个答案:

答案 0 :(得分:0)

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