티스토리 뷰

안드로이드 액티비티는 서로 다른 상태이므로, Binder통신을 하게 된다.

그러나, 메모리는 무한정하게 사용할 수 없는 관계로, 이 부분을 적절하게 제한을 걸어두었다.


참고로 Intent통신은 내부적으로는 Binder를 사용하였다고 한다.

사용가능한 용량은 다음과 같이 Framework 소스에는 다음과 같이 명시가 되어 있다고 한다.


#define BINDER_VM_SIZE ((1 * 1024 * 1024) - (4096 * 2))


위를 계산해보면 1040384byte로 0.99M정도로 1M도사용할수 없는 용량이 나온다.

하지만 안드로이드측에서는 100KB 이상 사용하지 않는 것을 원한다고 한다.

한글을 3byte로 계산하였을 경우에 34133글자정도 넣을수 있다.

영어라면 글자수대로 사용할수 있지만...


실제로 이런 경우는 거의 발생하지는 않지만, 무식하게 개발을 하여야 하는 일이 생겼었다.

전에 프로젝트를 하다가 List를 통채로 10000개정도 넘겨주다가 먹통이 되는 현상이 있었는데, 이 현상도 메모리가 넘쳐서 그런것이며,

이것을 약간 해결한 방법은 Parcelable로 변경하여서 사용하는 것이었는데, 이것 또한 언젠가는 한계가 있다.

그러므로, 자료를 넘겨줄때는 Uri등으로 값을 작게 넘겨주는것이 좋겠다.


찾아보니, 에러메세지는 다음과 같이 발생한다고 한다.


E/JavaBinder(199): !!! FAILED BINDER TRANSACTION !!!


그럼 오늘도 수고하길.


'Mobile > Android' 카테고리의 다른 글

[Android]adb - screenshot  (0) 2014.11.29
[Android]Log - level  (0) 2014.11.26
[Android]View - 자신의 위치 구하기  (0) 2014.11.25
[Android]dx tool - jar to dex  (0) 2014.11.21
[Android]adb - download file  (0) 2014.11.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함