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

생명주기에 대한 재 질문입니다.

0 추천
앱 A를 실행 시키고 여러 앱을 띄워서 시스템이 A를 onDestroy 시키도록 했습니다.

메모리 관리 앱에서 확인 했습니다.

정말로 완전히 죽었는지는 확인할 길이 없네요.

그리고 다시 A를 실행했습니다.

onCreat, onStart, onSavenstanceState, onResume 순으로 A가 화면을 띄웠는데 비 정상적인 화면입니다.

그래서 A를 종료시키면

onPause, onCreat, onStart, onResume, onStop, onDestroy 순으로 메시지를 뿌리고 정상적인 A 가 화면에 뜹니다.

아마 onStop, onDestroy 는 종료시킨 A가 뿌리는 메시지 같습니다.

그러면 처음 실행시킨 A가 완전히 종료된게 아닌건가요?

이럴때 해결방법이 없을까요?
새벽을미는 (1,500 포인트) 님이 2013년 6월 13일 질문
새벽을미는님이 2013년 6월 13일 수정

2개의 답변

0 추천
우선 프로세스가 확실히 죽었는지 확인하는 방법은

adb 혹은 유선으로 연결해서 top 명령어를 통해 확인 가능합니다.

혹은 이클립스의 DDMS 프로세스 확인창에서도 가능합니다.

 

새벽님의 코드가 완벽한데 A가 비정상적으로 떴다면 당연히 onDestroy가 안되었을 거라 예상됩니다.

 

앱을 완벽히 죽이는 방법은

onPause시에 아래 코드를 입력하면 됩니다.

onFinish();

system.exit(0);
그후최초 (2,980 포인트) 님이 2013년 6월 13일 답변
0 추천
1. 처음 실행시킨 A는 일단 종료됩니다.

2. 처음 실행킨 A가 띄운 앱들의 TASK ROOT는 A입니다.

3. 처음 A가 실행시킨 앱들을 백키로 종료해보시면 알겠지만

처음 A로 돌아와야하는데 A가 없기 때문에 A를 새로 생성해서 A로 돌아옵니다.

 

질문하신 상황은 A실행 A가 B,C,D,E등의 앱을 실행 A종료 후 아마 홈키등으로 런쳐로 뺵..

그리고 다시 런쳐에서 A선택..

이때 액티비티매니져가 B,C,D,E때문에 처음A를 살려야한다고 판단한것 같은데요.

A의 액티비티 속석이 singletask인지등에 따라서도 결과가 조금씩 변할것 같고요..

 테스트 코드로 테스트를 좀 해보셔야할것 같네요
ignitepaper (1,720 포인트) 님이 2013년 6월 13일 답변
...