2012-07-09 80 views
0

我在使用Parcelables共享活動之間的信息時遇到問題。我在實現方面沒有問題,但是在某些手機上卻有問題。看來,內部存儲的信息太多了。這會導致拋出異常時拋出的異常。我無法在文檔中找到任何類型的內存限制。什麼是最好的方式來找出,如果給出信息是很小的寫入/從Parcel /讀取它們,Parcelable寫入Parcel之前?Parcel可以存儲多少個數據?

回答

1

我猜< = Integer.MAX_VALUE的

/** 
* Returns the total amount of data contained in the parcel. 
*/ 
public final native int dataSize(); 
+0

你期望的結果dataSize()是否包含字符串「Foo」的結果?如何在添加之前計算添加的金額? – 2012-07-09 11:39:58

+1

int length =「Foo」.getBytes()。length; – nyjsl 2012-07-11 05:44:24

0

你在Parcels中存儲什麼類型的數據?我注意到,如果你搞砸了(即不確保以同樣的方式存儲和檢索數據),最終會得到非常奇怪的結果,有些甚至會導致應用程序拋出OutOfMemoryException異常。

TLDR;確保您按相同順序閱讀&寫入包裹。

+0

不可能是問題!該機制在大多數手機上都能正常工作,但在某些設備(通常爲HTC設備)上無法正常工作 – 2012-07-09 10:05:39

+0

您是否可以在這些設備上始終如一地重現它? – ninetwozero 2012-07-09 10:24:55

+0

是的。如果我嘗試在'onSavedInstanceState'中保存活動狀態並在我的包中插入我的Parcelable,就會發生錯誤。如果我嘗試在活動之間傳遞該Parcelable,就會發生這種情況。雖然三星Nexus S將unparcel,沒有任何例外,但HTC Desire不 – 2012-07-09 11:36:35

相關問題