안드로이드 액티비티 종료


Intro 화면에서 로그인 후 메인으로 넘어가고있습니다. A(인트로) B(메인)

A 액티비티

 Intent intent = new Intent(MyIntro.this, MainActivity.class);
 startActivity(intent);
 finish();

로그인이 완료되면 이렇게 인텐트를 이용하여 메인으로 넘어갑니다.

로그를 찍어보면 A.OnPause() -> B.OnCreate() -> A.OnStop() - > A.OnDestroy()

이순서로 A액티비티가 종료됩니다. 처음 앱실행은 문제가 없습니다.

하지만 메인엑티비티를 종료하고 (B.OnDestroy() 까지 로그 찍히는거보고)

다시 앱 실행 하였을때는 A->B로 넘어갈때 A가 OnStop까지만 가고 OnDestroy가 안됩니다.

그래서 메인엑티비가 종료되면 A액티비가 안보여야하는데 다시 보이게 됩니다.

2~3번 정도는 A가 Destroy() 되어 잘 종료되지만 그 후로 반복하면 계속 A가 남아있습니다.

앱이 시작되고 A액티비티는 한번지나가면 다시 사용할 일이 없기에 정상적으로 종료되어야 합니다. 어떻게 해결해야할까요 ?

A액티비티가 잘 종료되었을떄와 잘 종료 되지 않았을때 입니다.

이미지

이미지

  • 2016년 05월 12일에 작성됨

  • 2번까지는 첫번째 로그처럼 잘되고 3번째부터 두번재 로그처럼 나옵니다.    김재우   2016.5.12 11:41     
  • 홈키를 눌러 앱을 종료시키면 다시 처음 2번은 잘되고 반복적입니다.    김재우   2016.5.12 11:42     
조회수 1242


1 답변


"MyIntro"에서 "MainActivity"로 화면이 바뀐 이후에 "MyIntro"를 더 이상 사용하지 않는다면 startActivity() 아래에 finish()를 호출하는 방법보다 아래 방법이 더 안전해 보입니다.

a. Pause() 함수에서 finish() 호출하기

@Override
public void onPause() {
    super.onPause();

    // Remove the activity when its off the screen
    finish();
}

b. AndroidManifest.xml.의 android:noHistory 속성을 "true"로 설정하기

<activity
            ...
            android:noHistory="true">
</activity>

아래 사이트 참고하세요

  • 2016년 05월 12일에 작성됨

  • 정말 감사합니다. 바로 해결했습니다ㅠㅠ 이런방법도 있네요     김재우   2016.5.12 12:15     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close