어플리케이션을 종료하는 방법이 몇가지 있더군요.

하지만 Activity 스택이 쌓인 상태에서 한 번에 종료하는 방법은 제가 찾지 못했습니다;

다른 분들은 어떻게 하신건지 모르겠지만 제가 한 방법을 소개하겠습니다~

강좌라기엔 무색하지만... 팁 이런 카테고리 있었음 좋겠네요 =_=;

(강좌를 소스로 바꿨습니다~ 영 부끄러워서;)


저는 finish()를 이용해서 종료하는 방법을 택했는데요.

조금은 귀찮은 방법이 될 수도 있습니다.

우선 액티비에 종속되는 액티비티를 제외하고 (가령 TabHost에 Tab으로 들어가는 액티비티)

액티비티에 onActivityResult()를 오버라이드(한글로 좋은 말 없을까요 =_=?) 합니다.

그리고 특정 result값이 넘어오면 같이 finish()를 실행하는 방법입니다.


갑, 을, 병, 정 액티비티가 있다고 하겠습니다.

앱을 실행하면 먼저 갑이 뜹니다.

그리고 startActivity에 의해

을, 병, 정 순으로 들어왔습니다.

여기서 취소(이전)버튼을 누르면 다시 정이 종료되면서 병으로 가고, 을로 가고, 갑으로 가고 이렇게 되겠죠.

하지만 이렇게 하려면 사용자가 취소(이전)버튼을 연타해야 하는 노고가 필요합니다 =_=;

해서, 저는 정 액티비티에서 메뉴버튼을 눌렀을 때 "앱 종료"라는 메뉴를 만들었고,

이를 누르면

setResult(4); //죽음의 4입니다 -0-;

finish();

를 하였습니다.

각 액티비티에는 다음의 소스가 들어가있습니다.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
	super.onActivityResult(requestCode, resultCode, data);
	switch (resultCode)	{
	case 3 : 
	case 4 :
		setResult(resultCode);
		finish();
		break;
	}
}

result를 4로 설정하고 finish()를 했으니, 이전 액티비티에는 resultCode가 4로 전달이 되고, switch문에 의해

다시 finish()를 호출하게 됩니다.
이런 식으로 스택에 쌓인 액티비티들은 finish()를 호출하게 되고,

앱은 정상 종료됩니다.


이 외에 쌓여있는 액티비티를 원터치로 종료하는 방법 아시는 것 있으시면 같이 공유해요~

P.S. API상으로는 공식적으로 한 번에 앱을 죽이는 메서드를 제공하지 않고 있는데, 이유가 있는걸까요? 아니면 제가 못찾는건가요 =ㅁ=;

lifecluee@gmail.com