2013-05-06 3 views
1

나는 안드로이드 스톡 카메라 앱이 의도에 따라 필사자를 통해 이미지를 호출자에게 다시 전달할 때 크기가 ~ 50k로 줄어든 것을 발견했습니다.android 인 텐트 인라인 데이터 크기 제한

아래의 소스 코드 링크에서 다음 텍스트

검색 : 제한 50K 픽셀 그래서 우리는 의도

소스 코드 링크에서 그것을 반환 할 수 있습니다 Android Stock Camera Source Code

내 질문은, 왜이 제한 , 의도를 통해 전달할 수있는 데이터의 실제 크기 제한은 무엇입니까? 나는 이것에 대해 이야기하는 포럼을 발견 할 수 있었지만, 한계에서 구글의 실제 문서는 없다.

+1

여러분은 최대의 돌들 크기에 더 관심이 있습니다. 나는 또한 구체적인 것을 발견 할 수 없었지만 1MB는 ​​가장 일반적으로 추측으로 언급되었다. BTW에서는이 제한도 좋은 의미가 있습니다. "왜 번들로 5MB를 전송해야합니까?" 다른 방법이 있습니다. –

+0

내 앱이 다른 앱과 호환되도록하려면 Uri와 비트 맵을 통해 가능한 두 가지 방법으로 비트 맵을 반환 할 수 있어야합니다. 그래서 그것은 내 앱에 의존하지 않고 다른 앱이 내게 그것을 요구하는 방식에 달려있다. 그리고 unfortunatelly 나는 그들의 측면에서 가난한 디자인이라고 생각하는 의도로 이해할 수있는 것을 통해 그것을 묻는 몇 가지 앱을 찾았지만, 그 밖에 내가 할 수있는 것은 무엇입니까. 그래서 나는 내 이미지를 축소해야 할 것 같아. – PerracoLabs

답변

0

이는 바인더 트랜잭션 버퍼에 관한 것이다 :

원격 프로 시저 호출 동안 인자와 호출의 리턴 값은 바인더 트랜잭션 버퍼 내에 저장된 Parcel 개체로 전송된다. 인수 또는 반환 값이 너무 커서 트랜잭션 버퍼에 맞지 않으면 호출이 실패하고 TransactionTooLargeException이 발생합니다.

바인더 트랜잭션 버퍼에는 제한된 고정 크기 (현재 1Mb)가 있으며 프로세스에 대해 진행중인 모든 트랜잭션이 공유합니다. 따라서 대부분의 개별 트랜잭션이 중간 크기 인 경우에도 진행중인 많은 트랜잭션이있을 때이 예외가 발생할 수 있습니다. 1

바인더 트랜잭션 버퍼 제한을 초과하면 TransactionTooLargeException이 표시됩니다.

한계는 1MB로 가정되지만 기기에 따라 조금씩 다르지만 512KB보다 작아서 거의 1MB가됩니다.

Android Documentation