카카오톡 로그인을 사용하고 있는데 액티비티 구조가 이렇다...
1 . Login -> Main 하면서 Login액티비티 finish
2 . Main -> Setup 하면서 Main액티비티 finish하지 않음
3. Setup액티비티에 앱 연결 해지 기능 있음
4. 앱 연결 해지 하면 Login 액티비티로 이동
여기서 문제가 발생했다.
앱 연결 해지 후 Login액티비티로 이동하는데 Main액티비티가 살아있어서
뒤로가기하면 앱이 종료되는것이 아니라 Main액티비티로 이동해버린다...
///////////////////////////////////////////////////////////////////////////////////////
해결방법에는 여러가지가 있었는데
새로운 액티비티를 열때마다 액티비티를 저장해놓고 한꺼번에 종료시키는 방법
finishAffinity() 사용 등이 있었는데
나 같은 경우는 액티비티를 하나만 더 종료시켜주면 되니까 putExtra를 사용하기로 했다.
앱 연결 해지 버튼을 누르면
protected void redirectSignupActivity() {
final Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("state", "kill");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
this.finish();
}
이 메소드를 실행시키게 한다
이때 LoginActivity로 바로 인텐트 하지않고 Main액티비티를 거쳐 가게끔 한다
setFlags를 FLAG_ACTIVITY_CLEAR_TOP으로 줘서
기존에 쌓여있는 main액티비티만을 남기고 나머지 activity를 종료시킨다.
(FLAG_ACTIVITY_CLEAR_TOP 플래그를 주게되면 해당 Main액티비티가 OnCreate부터 다시 실행된다)
그리고 MainActivity의 OnCreate에
if (getIntent().getExtras() != null && getIntent().getExtras().getString("state").equals("kill")) {
final Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
this.finish();
}
이렇게 해놓으면 "kill"값을 받고
LoginActivity를 띄운다음
MainActivity는 죽게된다.
그리고 LoginActivity에서 뒤로가기를 누르게되면 Main으로 넘어가지않고
앱이 종료되는것을 알 수 있다.
'공부 > Android' 카테고리의 다른 글
(공공데이터 API) SERVICE_KEY_IS_NOT_REGISTERED_ERROR (1) | 2016.10.22 |
---|---|
(android) this.finish() 액티비티 종료시 (0) | 2016.09.05 |
(에러) Error:svn: E155004: Run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) (0) | 2016.07.27 |
(android) 마쉬멜로우 권한(Marshmallow permission) (0) | 2016.07.26 |
(android) adapter getview 중복 error (0) | 2016.07.15 |