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