안드로이드 액티비티(startActivity,intent,task) 관련 질문
조회수 615회
안드로이드 액티비티가 A B C가 있을때 A, B는 한개만 존재해야하고, C는 여러번 쌓을 예정입니다.
A -> C -> C -> B -> C -> C -> B -> C 순으로 호출했을때
A C C C C B C 로 남고, 순차적으로 종료하면 역순으로 가게 하고 싶은데
1.FLAG_ACTIVITY_REORDER_TO_FRONT 를 사용해서 B를 재호출해도 도큐먼트대로 기존 B가 최상단으로 당겨지지가 않습니다. (A C C B C C B C 이대로 남음)
2.launchMode 중 singleTask를 활용하면 A C C B C' C' 이후 B를 호출할때 기존의 B C C가 날아가면서 A C C B C' C' (B')시도시 A C C B'가 되버립니다.
3.어떻게든 FLAG_ACTIVITY_REORDER_TO_FRONT를 활용해서 B 액티비티만 앞으로 당겨올수 있으면 되는데 문서를 참조해봐도 미작동하는 이유를 모르겠습니다.
C는 FLAG_ACTIVITY_REORDER_TO_FRONT를 setFlag해서 startActivity하는 중이고, A,B는 특별한 설정을 주고있지 않습니다.
혹시라도 아시는 분 답변 부탁드립니다.
+++ 추가
intent = new Intent(this, SubActivity.class);
intent.putExtra("data", data);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
해당하는 코드인데, getIntent부분에서 intent flag값을 찍으면 new_task도 같이 찍혀나옵니다. 해당 내용은 도큐먼트 문서에 없는 내용인데 이게 문제인거같은데 어떻게 처리해야할까요? removeflag로는 해결안되고 api버전이 너무 높습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
해당 버그는 https://issuetracker.google.com/issues/36986021#c2
13년도 이슈이며, 4.4, 7.0, 7.1에서 버그가 발생 중입니다. (s6, 7.0버전에서 재현)
해당 문제가 있는 버전들은 startActivity시 강제로 new_task를 부여하는걸로 추정됩니다. 해결방법은 링크안에 있습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력