본문 바로가기

나의 플랫폼/안드로이드

[Android] Intent.FLAG_ACTIVITY_NO_HISTORY

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Activity에 여러 기능을 가진 Flag 가 있죠.

이 중에서 제가 말하고자 Flag는 제목에 써있듯이 FLAG_ACTIVITY_NO_HISTORY 입니다.


다 아실꺼라 생각 합니다. 

그래도 혹시 저와 같이 고민 하는 사람이 있을 꺼 해서 소스 공유 할려구요 ㅎ


1. 메인 화면이 실행됨.

2. A화면이 실행됨.

3. B화면이 실행됨.

4. A화면이 종료 되면서, C화면 실행  (B화면이 보이는 상황)

5. C화면을 종료 하면 B화면이 나오지 않음.


테스트를 해본 결과, C화면이 실행 되지 않으면 B화면이 종료 되지 않습니다.

즉!


상황1) 메인 -> A -> B 에서 A가 종료

결과1) 메인 -> B


상황2) 메인 -> A -> B 에서 A가 종료되면서 C 실행

결과2) 메인 -> C 


상황 2에선 B가 자동 제거 되는 것을 확인 하실 수 있습니다.

참고로 화면 B 화면 이동 시에만 FLAG_ACTIVITY_NO_HISTORY 를 넣었습니다.



테스트한 소스를 올릴 터이니 한번 해보세요.


activityMoveTest.z01

activityMoveTest.z02

activityMoveTest.zip



이 상황은 B화면이 사진이나 카메라 이동 같은 다른 앱을 실행 했을 때, 사용할만한 내용입니다.

앱 내부 화면을 이용하실 때에는 로컬리시버를 하나 만들어서

함께 종료되도록 하는 방법이 가장 안전할 듯 하네요 ㅎ


참고하세요.



제가 현재(2016-10-31) 테스트 해본 결과 FLAG_ACTIVITY_NO_HISTORY 를 사용 해서,

Camera를 호출 한 경우 onActivityResult 에서 항상 resultCode가 RESULT_CANCELED이 넘어 옵니다.

갤러리 같은 경우는 문제 없이 RESULT_OK가 넘어 옵니다.

이부분에 경험이 있으신 분은 괜찮으시면 댓글 부탁드려요.