마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 Intent, Debugger

0 추천
A-B-C 이렇게 넘어갈 수 있는 Intent를 했는데요 B에서 C로 잘 넘어갑니다. C에서 B로 잘 되돌아오기도 하구요

근데 B로 다시 되돌아온 후에 C로 다시 가려고 하면 중지가 되네요 어떻게 해야할지 모르겠습니다

또 하나는 에뮬레이터에서는 실행이 잘 되지만 핸드폰에서는 실행이 되질 않습니다. 다른 프로젝트는 핸드폰에서 잘 실행되는데 왜 이 프로젝트만 이러는지 모르겠네요
익명사용자 님이 2014년 8월 11일 질문

1개의 답변

0 추천
내용이 너무 추상적이네요 ㅠ 수수께끼도 아니그..

중지됬을 때 에러로그나 A-B-C 에서 어떤 작업을 수행하는지 정도는 적어주시고

그 아래에 있는 프로젝트도 마찬가지로 뭐하는 녀석인지 알려주시면 답변다는 분들이 조언 많이 해주실거에요!

 

중지될때의 에러로그를 보시면 바로 답 나오실텐데 '-'

 

암튼 제 경험상 조심스레 추측하자면..

첫 번째 경우는 OOM 이 발생했을 것 같아요. 혹시 C액티비티에서 이미지 작업을 수행하지 않나요?

예를 들어 C액티비티의 비트맵변수에 이미지리소스를 할당하고 나서 백키 등으로 되돌아오는 경우

리사이클 및 널할당으로 직접 해제하지 않으면 메모리 릭이 발생하고 또 다시 할당을 시도할때는

어플에 할당된 메모리 초과로 중지되버리는거죠~ 쉽게 말해서 하나의 어플당 일반적으로 힙메모리 32MB 가

할당되어있는데요 C에서 이미지작업으로 인해 20MB 를 사용한다고 가정했을 때 비트맵리소스를 해제하지않으면

B로 되돌아와도 그대로 유지되고 있다가 다시 C로 진입시 +20MB 를 다시 할당하려고 시도하여

총 40MB로 OOM이 발생하는거죠. OOM이 맞다면 메모리관리법에 대해서는 직접 한번 찾아보세요~

그리고 한가지더 자세한 설명은 생략하고 스레드를 사용한다면 생명관리를 한번 체크해보세요!

 

두 번째 경우는 소프트웨어적 관점인 안드로이드 버전과 하드웨어적 관점인 기기의 물리적 스펙을 따져봐야해요

예를 들어 에뮬레이터의 안드로이드 버전이 4.4.2 인데 핸드폰은 2.3.3 이라고 할때

글쓴님이 킷캣에서부터 지원하는 api를 진저에서 사용하려고 한다면 지원하지 않는 api 이므로

미정의동작이 발생할 수 있습니다. 또한 에뮬레이터 환경과 실제 기기의 외부메모리 등에 접근하고자 하는 경우

경로가 다를 수도 있구요. 이런 등등의 예상치 못한 경우를 대비하여 예외처리를 해주지않으셨다면

뻗어버리는거지요 '-'
초보개발자ㅠ (33,870 포인트) 님이 2014년 8월 11일 답변
오 OOM이 제일 맞는 것같은데요 검색해도 안나오네요;; 혹시 방법 아시나요...?
OOM은 out of memory 의 줄임말로
네이x에 "안드로이드 out of memory" 로 검색하시면 될거에요

아래 참고하세요
http://sangki19.tistory.com/46
...