Android 2015. 1. 21. 18:41

알림바의 알림을 통해 앱을 실행 할 경우 activity stack이 꼬이는 경우가 있다.

이를 해결하기 위해서 DummyActivity를 사용하거나 LauncherActivity에 SingleTask를 주는 방법등이 있는데

둘다 프로세스종료->알림으로 앱 실행->런쳐에서 앱 실행 이 상황에서 앱이 두번씩 실행된다.


더미 액티비티를 이용한 해결 방법은 아래 주소에서 확인할 수 있다.

http://www.androidpub.com/796480 


주요 내용은 인텐트에 

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK 

                | Intent.FLAG_ACTIVITY_CLEAR_TOP 

                | Intent.FLAG_ACTIVITY_SINGLE_TOP);

이렇게 주니까 어떤 상황에서든지 Activity가 하나만 뜬다는 내용.


Intent.FLAG_ACTIVITY_NEW_TASK 

기존의 Task에 해당 Activity가 있다면 해당 Task에서 Activity를 추가함. onNewIntent()부터 시작.

없으면 새로운 Task생성 후 RootActivity가 됨. onCreate()부터 시작.


Intent.FLAG_ACTIVITY_CLEAR_TOP 

기존의 Task에 해당 Activity가 있다면 해당 Activity를 TopActivity로 만들고 기존의 Activity위에 있던 다른 Activity들을 finish시킴. 해당 Activity는 onNewIntent()부터 시작

없으면 새로운 액티비티가 TopActivity로 추가됨. onCreate()부터 시작.


Intent.FLAG_ACTIVITY_SINGLE_TOP 

TopActivity가 해당 Activity 라면 해당 Activity의 onNewIntent()부터 시작.

없으면 새로운 액티비티가 TopActivity로 추가됨. onCreate()부터 시작.



LauncherActgivity에 SingleTask를 줄 경우에는 Launcher에서 실행할때 무조건 onNewIntent부터 실행해서 가장 최근의 액티비티 스택을 기억하지 못한다는 단점이 있다.


나는 아래 세가지 플로우를 만족하는 방법을 써야하는데

나는 이 방법을 ParentActivity를 설정해주면서 해결했다.




posted by 수면시간보장
: