안드로이드 개발 질문/답변
(글 수 45,052)
로그아웃시에 화면이 다시 로그인 화면으로 넘어가야 합니다.
로그아웃은 모든 View 에서 처리할 수 있기에 public으로 따로 만들어줬습니다.
그리고 모든 View에서 로그인을 클릭할 때 그 순간의 액티비티를 종료해야 하기에 파라미터로 액티비티를 던져줬구요.
public static void logOut(Activity act) {
act.finish();
Intent i = new Intent( act, Login.class );
i.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP );
i.putExtra( "KILL", true );
act.startActivity( i);
};
이렇게 구현했는데 일단 액태비티가 그냥 꺼집니다.
그래서 액티비티.finish() 인텐트 생성 뒤로 미루면 오류가 납니다.
로그아웃 구현하신 분들은 어떻게 처리하시나요?




Login Activity가 Task의 아랫쪽에서 이미 실행 중인 상태에서,
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP로 재 실행 시키면,
위의 코드에서는 자동으로 로그 아웃 activity가 종료되면서, Login Activity 까지 가게 됩니다.
이 경우는 별도로 finish를 호출해 주실 필요가 없습니다.
즉, LogIn Activity -> 콘덴츠 activity -> Logout Activity 형태로 Task stack이 있다면,
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP 로 LogIn Activity 를 호출하면
콘덴츠 activity와 Logout Activity는 자동으로 종료되면서
LogIn Activity가 최상단에 위치하게 됩니다.