마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Intent.FLAG_ACTIVITY_CLEAR_TOP 문제

0 추천
1.  SplashActivity 후에 2초 후 BaseActivity를 호출 하고 SplashActivity는 finish 합니다.

 

2.  BaseActivity에서 인수값이 child에 따라 구분해 다음과 같이 호출하고 있습니다.

Intent intent = new Intent(getApplicationContext(), BaseActivity.class);

if(child == false){

if(this.isTaskRoot() == false)

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

}

this.startActivity(intent);

 

3.  원하는 것은 A -> B -> C -> D 상태에서

언제든지 parent(child == false)를 호출하면,

A를 제외한 모든 엑티비티를 닫고,

A -> B의 상태를 만드는 것입니다.

 

4.  문제는 처음 A상태에서 parent 초출 후

child를 여러번(예 : 3회) 호출 한 후 다시 parent를 호출 했을 때

원하는 A -> B가 아니라 A -> B -> C -> D 상태로 엑티비티가 남아 있습니다.

 

5.  그래서 NEW_TASK와 CLEAR_TASK를 사용하니 A까지 지워져 버리네요.

 

어떻게 해야 할까요? ㅠ.ㅠ
익명사용자 님이 2018년 7월 17일 질문

1개의 답변

0 추천
 
채택된 답변
Activity를 띄울때 startActivity대신 startActivityForResult를 사용해 보세요

Activity를 시작할때 requestCode를 넣어서 시작시키고

시작된 Activity에서 특정 조건이 될때 setResult로 resultCode를 설정하고 finish하시면 startActivityForResult로 activity를 시작시킨 activity에서 onActivityResult를 통해 requestCode, resultCode가 들어오게 됩니다

이걸 조합하시면 저런건 껌으로 되죠

혹시나 더 궁금한 사항이 있다면 구글링 해보세요. 엄청 많이 나올겁니다.
prague (26,200 포인트) 님이 2018년 7월 17일 답변
답변 감사드립니다!
그런데 인텐드 플라그를 통해 할 수 있는 방법은 없을까요?
...