알림바의 알림을 통해 앱을 실행 할 경우 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를 설정해주면서 해결했다.
'Android' 카테고리의 다른 글
스크롤뷰가 아닌 곳에서 스크롤 동작을 구현해보자! (2) | 2015.02.05 |
---|---|
왜 스크롤뷰가 나타나지 않는거야! (0) | 2015.01.30 |
Activity에서 onPause() 전에 무조건 onUserLeaveHint() 가 수행될 경우. (0) | 2015.01.21 |
AndroidStudio 설치하기 (0) | 2015.01.14 |
미디어 컨트롤 로그 분석 (0) | 2014.08.13 |