[Android]Android 뒤로가기 눌러서 현재 액티비티를 종료하고 백스택 불러오기(onBackPressed 이용)
액티비티 인텐트로 페이지를 이동하다보면 백스택이 쌓여서 뒤로가기를 눌러도 같은 화면이 나오는 경우가 있다.
이때의 해결 방법이 onBackPressed를 이용하여 현재 액티비티를 종료하고 백스택을 불러오는 것이다.
//뒤로가기 버튼 눌렀을 때
@Override
public void onBackPressed() {
super.onBackPressed();
stopPlay(); //이 액티비티에서 종료되어야 하는 활동 종료시켜주는 함수
Toast.makeText(WebViewPlayer.this, "방송 시청이 종료되었습니다.", Toast.LENGTH_SHORT).show(); //토스트 메시지
Intent intent = new Intent(WebViewPlayer.this, MainActivity.class); //지금 액티비티에서 다른 액티비티로 이동하는 인텐트 설정
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //인텐트 플래그 설정
startActivity(intent); //인텐트 이동
finish(); //현재 액티비티 종료
}
FLAG_ACTIVITY_CLEAR_TOP 이라는 Intent Flag를 사용한다.
FLAG_ACTIVITY_CLEAR_TOP : 호출하는 Activity가 스택에 있을 경우, 해당 Activity를 최상위로 올리면서, 그 위에 있던 Activity들을 모두 삭제하는 Flag
RootActivity와 동일한 Activity만 남긴 후 Stack에 쌓여 있는 나머지 Activity를 모두 onDestroy() 시키는 Flag
속성이 적용된 Activity는 onCreate()부터 시작됨
Ex) ABCDE → C call → ABC
Intent Flag에 대한 이해를 돕기 위한 좋은 글 :
https://medium.com/@logishudson0218/intent-flag%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B4-d8c91ddd3bfc