2013-05-06 88 views
1

我發現Android股票相機應用程序,當通過意圖上的parcelable將圖像傳回給調用者時,會將大小減小到〜50k。android intents行內數據大小限制

搜索在下面的源代碼鏈接的下一個文本:限制爲50K像素,所以我們可以在意向

源代碼鏈接回吧:Android Stock Camera Source Code

我的問題是,爲什麼這個限制,以及我可以通過意圖傳遞的數據的實際大小限制是多少?我可以找到論壇討論這個問題,但沒有真正的文件從谷歌的限制。

+1

您對最大的Byndle大小更感興趣。我也無法找到任何具體的東西,但似乎1MB最常被提及爲猜測。順便說一句,這個限制也有很好的含義 - 你開始思考「爲什麼我需要將5MB轉移到一個捆綁包中?」有其他更好的方法 – 2013-05-06 10:33:13

+0

問題是,爲了使我的應用程序與其他應用程序兼容,我必須能夠以兩種可能的方式返回位圖,這兩種方式都是通過Uri和意圖上的位圖。所以它不取決於我的應用程序,而是取決於另一個應用程序對我的要求。不幸的是,我發現了一些應用程序,通過意圖對它進行詢問,我認爲這是一個糟糕的設計,但我還能做什麼。所以我想我將不得不縮小我的形象。 – PerracoLabs 2013-05-06 10:49:14

回答

0

這與粘合劑事務緩衝器:

在遠程過程調用,參數和調用的返回值被傳輸作爲存儲在活頁夾的事務緩衝器Parcel對象。如果參數或返回值太大而無法放入事務緩衝區中,則調用將失敗,並且將引發TransactionTooLargeException

活頁夾事務緩衝區具有有限的固定大小,當前爲1Mb,由進程中正在進行的所有事務共享。因此,即使大多數單個交易的規模適中,當有許多交易正在進行時,這種異常也會被拋出。 1

如果超過了事務緩存限制,您將得到TransactionTooLargeException

該限制應該是1MB,但它隨設備的不同而不同,從小於512KB到幾乎滿1MB。

Android Documentation