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

안드로이드 7.0 업데이트 이후 home 이동 시 activity onDestroy 호출 문제

0 추천
넥서스 5x 사용중인데 기존에 6.0에서 앱을 개발하다가 7.0으로 업데이트를 하였습니다.

이후 앱실행 후 홈키를 눌러 홈화면으로 이동하면 activity의 onDestroy가 호출이 되는데 문제가 되고 있습니다.

onDestroy에 릴리즈 함수때문에 문제가 되고 앱이 백그라운드에서 유지가 안되니 문제가 됩니다.

무엇이 문제 일까요?
lanevo (590 포인트) 님이 2016년 12월 27일 질문

2개의 답변

0 추천

onDestroy 의 경우 VM에서 사용하지 않는 APP을 종료시키면서 호출 되는 것으로 언제 호출 될지는 VM 맘입니다. 구조 자체가 잘 못 된 듯 합니다.

앱이 홈 이 눌렸을 때도 동작이  유지 되기  원하시면, service를 구현하시는것을 권장합니다.

익명사용자 님이 2016년 12월 27일 답변
답변감사합니다. 그냥 아무로직도 구현되지 않고 처음 안드로이드 스튜디오에서 완전 기본앱으로 만들어도 홈키를 누르면 onDestroy가 호출되요 ... 홈키를 눌렀는데 onDestroy가 호출된다는 거 자체가 지금 이상한 현상이어서 기존에 lifeCycle을 완전히 뒤집는거 아닌가요 이거는; 7.1.1 버전인데 이런현상이 나옵니다.  서비스를 구현하는 거도 좋은데 remote 서비스가 아니라면 홈키를 눌렀을 때 activity 인스턴스가 사라지는 것이기 때문에 service도 같이 종료가 될것이라서 remote 서비스가 아니라면 의미도 없고 remote로 구현하였다고 하더라도 activity는 onDestroy가 호출된상태라서 activity <-> service간에 통신도 못하게 됩니다.  현재 버전은 7.1.1 입니다. 기종은  넥서스 5x에요
홈을 누르면 onPause-(방치시)-> onStop-(VM에서 소멸시)-> onDestroy 가 호출 되는 구조는 동일 할테니 lifeCycle이 뒤집히는거 아닌듯 합니다. 단순히 VM이 빨리 메모리 등의 이슈로 바로 종료 시키는 듯 합니다.
누갓버젼부터 멀티윈도우를 지원하기 위해, VM 관리 로직이 약간 달라졌다는데, 그 것 때문에 빨리 종료 되는 것으로 생각됩니다.
Activity 첫 실행 시 공유할 데이터를  Application에 넣으시고,
다시 수행시에는 이 값을 가져와서 service와 연동하게 구현하시면 될 겁니다.
일단 홈을 누르면 onPause-onStop-onDestroy가 바로 호출이됩니다.
어플리케이션 클래스의 onTerminate까지는 호출이 안되었고 일단 application 클래스를 활용하는 방법으로 고민해 보겠습니다. 저랑 같은 현상 겪으신 분 있었으면 좋겠네요 홈키를 눌렀을때 onDestroy가 바로 호출이되는 이유가 궁금해요 7.1.1 변경사항에 백그라운드 최적화라는 게 안드로이드 사이트에 있기는 한데 그게 지금 나타나는 현상은 아닌거 같아서 지금 일어나는 현상이 잘 이해가 되지 않네요
0 추천
자답 입니다. 7.1.1 버전을 올리니 개발자 모드의 '액티비티 유지 안함' 이 활성화 되어있었습니다. (이전버전에서는 활성화 되어있지 않았던것 같습니다. 그랬다면 6.0에서도 같은 현상이 발생했을 것입니다.)

'액티비티 유지 안함'을 활성화하면 앱이 백그라운드가 되었을 때 말 그대로 액티비티를 유지 하지 않는 것 같습니다. 그래서 홈키를 누르면 onDestroy가 호출이 되는것 입니다.

이 항목을 비활성화 하니 홈키를 눌렀을 때 onDestroy가 호출되지 않았습니다.
lanevo (590 포인트) 님이 2017년 1월 2일 답변
...