Development language/android
앱 빌드후 홈런쳐에서 실행시 onResume() 이 작동하지 않고 항상 앱이 재시작될때
SudekY
2021. 2. 25. 19:45
당황하지 마시오! 이건 니잘못이 아니고 안드로이드 버그요!!
증상
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