2013-03-13 53 views
1

通常在java中,對象通過引用的值傳遞。因此,如果我在地址addr處有對象OBJ,則該對象將通過地址addr的值傳遞。但最近我讀到堆棧溢出(How can I pass a Bitmap object from one activity to another),通過意圖傳遞位圖是昂貴的。下面是部分報價:當android通過意圖傳遞對象時,它通過值或引用的值完成

如果位圖作爲文件形式存在或資源,它始終是更好地 通過URI或位圖的資源ID,而不是位圖本身。 傳遞整個位圖需要大量內存。

那麼,爲什麼位圖對象不被其引用的值傳遞呢?

回答

0

因爲意圖的目標可能不在同一個應用程序中。您不能將參考從一個應用程序傳遞到另一個應用程序,因爲它們不共享內存。你可以通過序列化來解決這個問題,但是這需要耗費大量的時間和內存。意圖的接口是考慮到這一點的,所以它不允許將對象添加到Bundle中,除了某些簡單的類型或實現可序列化的對象(Bitmap可能,但是通過意圖傳遞它會碰到那個大內存/時間使用)。