앱 빌드후 홈런쳐에서 실행시 onResume() 이 작동하지 않고 항상 앱이 재시작될때
당황하지 마시오! 이건 니잘못이 아니고 안드로이드 버그요!!
증상
1. 디버그모드에서는 onResume() 정상적으로 호출되고 모든 엑티비티가 정상적으로 동작함
2. 하지만 앱을 릴리즈하기위해 앱을 빌드후 기기에 업로드하여 실행시에는 다음과 같은 문제가 발생한다.
- 오직 멀티태스킹모드에서 해당앱으로 넘어갈때에는 onResume() 이 작동
- 홈런쳐(홈) 에서 앱 아이콘을 눌러서 실행시에는 반드시 마지막으로 사용했던 엑티비티가 아닌 앱이 재시작된다.
원인
1. 런처 관련되어서 API 1 부터 존재했던 버그로서 특히 커스텀으로 된 런쳐, 예를 들어서 삼성, LG 와 같은 기기에서 해당 증상이 발생한다. (여기서 런쳐란 안드로이드 기기에서 홈을 말한다. 참고로 홈도 앱을 런쳐(실행)시키는 일종의 앱이다.)
2. 정확한 원인은 stackoverflow 를 뒤져봐도 추측글만 있고 해결책만 있을뿐이다.
해결
1. MainActivity에서 onCreate() 부분에 다음과 같은 코드를 추가
if (!isTaskRoot()
&& getIntent().hasCategory(Intent.CATEGORY_LAUNCHER)
&& getIntent().getAction() != null
&& getIntent().getAction().equals(Intent.ACTION_MAIN)){
finish();
return;
}
2. 위 코드를 view에서 onCreate() 부분 시작부분에 넣을것이라면 finish() 되니까 view의 onDestory() 대비를 잘해야한다.
출처 및 기타 다른 해결책 : stackoverflow.com/questions/19545889/app-restarts-rather-than-resumes
App restarts rather than resumes
Hopefully someone can help me figure out, if not a solution, at least an explanation for a behaviour. The Problem: On some devices, pressing the launcher icon results in the current task being re...
stackoverflow.com