2012-07-09 5 views
0

Parcelables을 사용하여 활동 간 정보를 공유하는 동안 문제가 발생했습니다. 구현에는 문제가 없지만 일부 휴대폰에서는 문제가 발생합니다. 내부에 저장된 정보는 지나치게 많습니다. 이것에 의해, 오브젝트가 비 정렬 화되면 (자), MemoryExceptions가 슬로우됩니다. 나는 문서 안에 어떤 종류의 메모리 제한도 찾을 수 없었다. 알아내는 가장 좋은 방법은 주어진 정보가 Parcel에 쓰여지기 전에 Parcel으로 /로부터 읽거나 쓸 수 없을 정도로 작은 경우입니다. Parcelable을 쓰려면?소포에 몇 개의 데이터를 저장할 수 있습니까?

답변

1

나는 < = Integer.MAX_VALUE를가

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

문자열 "Foo"를 소포하면'dataSize()'의 예상 결과는 무엇입니까? 그것을 추가하기 전에 추가되는 금액을 계산하는 방법? –

+1

int length = "Foo".getBytes(). length; – nyjsl

0

귀하는 소포에 어떤 유형의 데이터를 저장하고 있습니까? 나는 당신이 엉망인 경우 (즉, 같은 방식으로 데이터를 저장하고 검색하지 않도록주의해야한다.) 결국, 이상한 결과를 얻게 될 것이며, 일부는 심지어 애플리케이션이 OutOfMemoryException을 던질 수도있다.

TLDR; 같은 순서로 & 소포에 쓰십시오.

+0

문제가 될 수 없습니다 것 같아요! 이 메커니즘은 대부분의 휴대 전화에서 작동하지만 일부 기기에서는 실패합니다 (일반적으로 HTC 기기) –

+0

기기에서 일관되게 재생할 수 있습니까? – ninetwozero

+0

예. 'onSavedInstanceState'에 액티비티 상태를 저장하고이 번들 안에 내 Parcelable을 삽입하려고하면 오류가 발생합니다. 저도 Parcelable을 Activity간에 전달하려고하면 발생합니다. 삼성 Nexus S는 아무런 예외없이 HTC Desire가 알지 못하지만 –