2010-04-10 4 views
0

나는 약간의 이미지 처리를 수행하는 간단한 앱을 개발 중입니다. 그것은 두 가지 활동으로 나뉩니다. 하나는 디스플레이 요소가있는 메인 카메라이고 다른 하나는 휴대 전화의 카메라에서 이미지를 캡처하는 데 사용됩니다. 내 문제를 알리기 : 앱을 시작하고 이미지를 캡처합니다 (하위 액티비티로 새로운 인 텐트를 시작 함) 모든 데이터가 올바르게 표시됩니다. 나는이 후 다른 이미지를 캡처하는 경우, 내가서브 액티브를 두 번째로 시작하면 java.lang.OutOfMemoryError가 발생합니다.

java.lang.OutOfMemoryError와 실행 - 비트 맵의 ​​크기가 난 그냥 그것에서 일부 데이터를 추출 번째 활동에 캡처 된 비트 맵을 저장 해달라고 VM 예산을

을 초과하고 그것을 주 활동에 전달하십시오; 그 후 하위 활동을 마무리 (마무리)합니다. 나는 정말로 내가 그것에 관해 무엇을 할 수 있는지에 관해 모른다. 미리 감사드립니다!

인사, Zacherl

PS : 그것은 안드로이드 내 첫 번째 방법은, 그래서 내가했던 어떤 바보 같은 초보자 오류에 대해 사과; 누군가 다른 정보가 더 필요하다면, 나는 그것을 기꺼이 제공 할 것이다.

+0

영구 불린 배열을 할당하여 문제를 해결했습니다 (첫 번째 대답에 대한 설명 참조). 그림 크기가 변하지 않기 때문에이 작업을 수행 할 수 있습니다. 언제든지이 문제에 참여해 주셔서 감사합니다. – Zacherl

답변

0
당신이 스레드를 확인 할 수 있습니다

는 : Android memory allocation

당신은 그래서 당신은 아주 잘 다른 모든 것들과 함께 메모리에 2 개 개의 대형 카메라 이미지를로드 할 충분하지 않을 수 있습니다 작동하는 메모리를 많이하지 않습니다.

+0

빠른 답변 감사합니다. 요점은, 내가 포함 된 데이터의 대부분을 잃을 것이기 때문에 나는 이미지를 축소 할 수 없다는 것이다. 좀 더 정확하게 말하자면 : 데이터를 추출하는 데 사용하는 부울 배열 내에 전체 이미지를 임시로 저장하고 그 단계 후에 데이터 (10 개에서 40 개까지의 원시 값을 갖는 HashSet)를 반환합니다. 나는 HashSet이 많은 공간을 소비하지 않는다고 생각하여 VM의 GC가 메소드가 완료된 후 부울 배열에 의해 사용 된 공간을 비우지 않을까 우려합니다. 나 자신을 설명 했습니까? – Zacherl

관련 문제