Solve Problem/Android

[Android] FLAG: CLEAR_TOP

안다희 2019. 1. 5. 16:45
728x90

액티비티 A, B가 있다.

A->B->A->B->A->B... 계속 호출하게 되면 스택엔 ABABAB가 계속 쌓여 뒤로가기를 누르면

BABABA 순으로 두 개의 액티비티가 반복적으로 보일 것이다.

그냥 B에서 뒤로가기누르면 A로, A에서 뒤로가기 누르면 종료시킬 순 없는 것인가?

 

있다!

 

FLAG를 이용하면 된다.

많은 FLAG가 있지만 오늘은 CLEAR_TOP만을 이용해볼 것이다.

 

 

MainActivity2.java 파일이다.

 

@Override public void onClick(View view) { Intent intent; switch(view.getId()) { case R.id.btn_main: intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); break; }
} 

 

 

intent에 setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);을 해주면 현재 스택에서 그 위에 것들은 다 지운다는 뜻이다.

그러니까 AB에서 A를 호출하면 ABA가 되는 것이 아니라 그냥 A가 되도록 만들어 주는 것이다.

B를 삭제했기 때문이다!

 

 

참고 사이트 : http://theeye.pe.kr/archives/1298 

출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]