보통 사용자가 어플리케이션을 사용하다보면 한 액티비티에서 (버튼 터치 등을 통해) 다른 액티비티로 넘어가면서 사용하게 되는데, 이렇게 넘어가면서 액티비티는 계속해서 스택에 쌓이게 된다.
계속 액티비티를 열려있는 채로 유지하다보면 시스템에 대한 부하뿐만 아니라 사용자 입장에서는계속해서 back 버튼을 눌러서 빠져나와야 하는 불편함이 따르게 된다. 따라서 한 액티비티에서 다른 액티비티로 넘어갈 때 기존의 액티비티를 종료가 필요한 경우가 있다. (대표적으로 로그인 화면에서 로그인을 한 후에는 로그인 화면은 종료해준다.)
액티비티를 종료하는 방법은 간단하다.
액티비티에서 액티비티 스스로를 종료 시킬려면, 작업이 완료된 이후 finish() 만 호출해주면 종료가 된다.
하지만 다음의 경우처럼 액티비티에서 다른 액티비티를 호출하게 되는 경우에는 약간의 노력이 필요하다.
first라는 Activity에서 (사용자 동작으로) second 라는 Activity가 호출되어 열리면 액티비티 스택에 first Activity와 second Activity가 차례로 쌓이게 된다. 이때, first Activity에 별 다른 처리를 해주지 않고 second Activity를 종료시키게 되면 액티비티 스택에서 second Activity가 없어지고, 다시 first Activity로 오게된다. 물론, 액티비티 플래그 설정에 따라서 스택에 쌓이지 않을 수도 있다.
다시 본론으로 돌아와 second Activity를 실행했을 때 first Activity를 종료를 시켜보자.
2
3 public static Activity firstActivity;
4
5 @Override
6 public void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 setContentView(R.layout.main);
9
10 firstActivity = FirstActivity.this;
11 }
12 }
first Acitivity(FirstActivity)에서 Activity(firstActivity) 객체를 만들어 자기 자신을 담아둔다. 이때 Activity 객체를 static으로 두어 바로 참조할수 있게끔 한다.
2
3 @Override
4 public void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.main);
7
8 FirstActivity firstActivity = (FirstActivity)FirstActivity.firstActivity;
9 firstActivity.finish();
10 }
11 }
second Acitvity(SecondActivity)에서는 first Activity(FirstActivity)객체에 앞에서 담아 놓은 static Activity 변수 FirstActivity.firstActivity를 받아온다.
이제 second Activity(SecondActivity) 객체 안의 static Activity 변수(firstActivity)에는 first 액티비티 객체가 담겨있다. 그리고 이를 finish() 를 통해 종료시키면 된다. 이렇게 하면 second 액티비티에서 first 액티비티를 종료시킬 수 있다.
[출처] http://plaboratory.org/archives/127
'IT > 안드로이드+JAVA' 카테고리의 다른 글
[안드로이드] 6.0 마시멜로 권한체크하기 (링크) (0) | 2016.04.29 |
---|---|
[안드로이드] 안드로이드 스튜디오 gradle versionName 가져오기 (정리) (0) | 2016.04.28 |
[안드로이드] 어플 종료시키기 (펌) (0) | 2016.04.25 |
[안드로이드] 로그아웃 예제 (정리) (0) | 2016.04.25 |
[안드로이드] 안드로이드 스튜디오 자동임포트 (정리) (0) | 2016.04.24 |