Android Studio

[안드로이드] 여러 액티비티 종료시키기

i-moo 2017. 2. 9. 16:02
반응형

아이디와 비밀번호를 입력 하고 프로필 작성 후 완료 버튼을 눌렀을 때에 타임라인이 뜨면서 앞에 회원가입을 한 액티비티들을 모두 종료하기 위해 사용하였습니다.


MainActivity -> LoginActivity -> ProfileActivity -> MainTLActivity

-> 뒤로가기 -> MainActivity


액티비티는 

LoginActivity

ProfileActivity 를 종료시키고 MainTLActivity로 넘어갈 것입니다.


저 3개의 액티비티를 상속 해줄 BaseActivity를 생성합니다.

여기서!! 

public class BaseActivity extends AppCompatActivity extends를 해줘야 Activity를 상속할 때 문제가 나지 않습니다.


생성하였으면, 4개의 액티비티를 상속 해줍니다.

public class ProfileActivity extends BaseActivity

상속을 한 뒤에 BaseActivity에서 액티비티 ArrayList를 만들어 삭제할 액티비티들을 저장하고 한번에 삭제할 함수를 만들어 줄겁니다.

- BaseActivity


// 여러 액티비티 한번에 종료하기
public static ArrayList<Activity> actList = new ArrayList<Activity>();

public void actFinish(){
for(int i = 0; i < actList.size(); i++)
actList.get(i).finish();
}

- 삭제할 액티비티 (저는 위에 저 3개의 액티비티)

protected void onCreate(Bundle savedInstanceState) {
actList.add(this);

actList.add(this); 를 추가해줍니다.


삭제할 액티비티를 모두 추가해주셨으면!!

저는 ProfileActivity에서 버튼을 눌렀을 때에 actFinish()함수를 불러주겠습니다.

Intent intent = new Intent(ProfileActivity.this, MainTLActivity.class);
startActivity(intent);
actFinish();



MainTLActivity화면에서 뒤로가기를 눌렀을 경우 ProfileActivity 아닌 MainActivity가 나오게 됩니다.



2018.02.12 수정

onDestroy에서 BaseActivity에 추가해준 액티비티에 대해 remove도 해줘야합니다!

만약, MainActivity -> LoginActivity -> MainActivity -> LoginActivity .. 이렇게 로직을 탄다면

계속 리스트에는 쌓이는 구조기때문에 remove가 필요합니다!

댓글 감사합니다!

반응형