通常在java中,对象通过其引用的值传递。因此,如果我在地址OBJ
处有对象addr
,那么该对象将通过地址addr
的值传递。但最近我读了Stack Overflow(How can I pass a Bitmap object from one activity to another),通过意图传递位图是很昂贵的。这是部分引用:
如果位图作为文件或资源存在,则总是更好 传递位图的URI或ResourceID,而不是位图本身。 传递整个位图需要大量内存。
那么为什么位图对象不会被其引用的值传递?
答案 0 :(得分:0)
因为意图的目标可能不在同一个应用程序中。您无法将引用从一个应用程序传递到另一个应用程序,因为它们不共享内存。您可以通过序列化解决这个问题,但这需要花费大量时间和内存。意图的接口是考虑到这一点的,所以它不允许将对象添加到Bundle,除了某些简单类型或实现可序列化的对象(Bitmap可能,但通过intent传递它会击中那个大内存) /时间使用)。