[Android]Android 뒤로가기 눌러서 현재 액티비티를 종료하고 백스택 불러오기(onBackPressed 이용)

less than 1 minute read

액티비티 인텐트로 페이지를 이동하다보면 백스택이 쌓여서 뒤로가기를 눌러도 같은 화면이 나오는 경우가 있다.
이때의 해결 방법이 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

Categories:

Updated: