패스트터틀

앱 빌드후 홈런쳐에서 실행시 onResume() 이 작동하지 않고 항상 앱이 재시작될때 본문

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

 

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

 

Comments