Develop/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 [밍고의서식지:티스토리]