카카오톡 로그인을 사용하고 있는데 액티비티 구조가 이렇다...


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으로 넘어가지않고

앱이 종료되는것을 알 수 있다.

+ Recent posts