안드로이드 어플리케이션 종료 방법

프로그래밍|2013.04.02 06:00

안드로이드 어플리케이션 종료 방법


안녕하세요^^ 안드로이드 프로그래밍에 관련된 포스팅을 오랜만에 하는 군요.^^
안드로이드 프로그래밍을 하면서 Intent라는 명령어를 간 혹 쓰기도 하는데, Intent는 다른 액티비티로 넘어 갈 때나 변수에 있는 값을 넘겨줄 때 많이 사용하기도 합니다. 어플을 종료를 하게 만들어야 되는데 가량 대부분 finish()라는 명령어를 쓰고 있습니다.




finish() 명령어는 액티비티에서 종료만 되고 다른 액티비티는 종료가 되질 않습니다. 쉽게 설명을 드리면 메인 액티비티에서 버튼 클릭후 Intent를 사용하여서 다른 액티비티로 넘어갔습니다. 다른 액티비티에 넘어간 상태에서 종료 버튼에 명령어를 finish()를 사용을 하면 현재 새로운 액티비티만 종료가 되고 나머지 액티비티는 종료가 되지 않게 되어 버립니다. 이런 부분이 참 난감할 때가 있습니다.

프로그래밍을 하다가 이런 것들 때문에 고민을 하기도 합니다. 어플리케이션하고 프로세서를 완전히 종료를 시켜야되는데 제대로 종료를 해버리는 명령어를 모르셔서 애태우시는 분들을 위해서 알려드리겠습니다. 안드로이드 초보분 들도 쉽게 따라하실 수 있는 내용입니다.
그저 명령어 몇 줄만 넣으면 완전히 액티비티가 종료되어 버립니다.

제가 예를 들어서 설명을 해드리겠습니다. 저도 프로그래밍을 직업으로 삼고 있으니 코딩을 해야겠네요. 간단 코딩입니다. 반복 그리고 꾸준히 해야되는 것입니다.

새로 프로젝트를 생성을 하여서 만들었습니다. 정말 간단히 만들어서 누구나 따라하실 수 있습니다. 소스까지 공개를 해드리겠습니다.



새롭게 생성된 프로젝트에서 액티비티에 버튼 두 개를 추가를 해 놓았습니다. 들어가기, 종료 버튼입니다. 들어가기 버튼을 누르게 되면 새로운 액티비티가 나옵니다. 마찬가지 새로운 액티비티에서는 종료 버튼이 있습니다.



간단한 구조로 되어 있습니다. 들어가기 버튼을 누르면 새로운 액티비티가 나옵니다. 여기에서 종료를 누르게 되면 새로운 액티비티가 종료가 되고, 새로운 액티비티가 종료된 상태에서 처음에 있던 액티비티에 있던 종료버튼을 누르게 되면 완전히 어플리케이션이 종료가 되어 버립니다.




어플리케이션을 완전히 종료하는 명령어는 다음과 같습니다.

moveTaskToBack(true);
finish();
android.os.Process.killProcess(android.os.Process.myPid());

위의 명령어만 새로운 액티비에서 버튼 쪽에 적용시키시면 새로운 액티비티에서 종료버튼을 누르게 되면 전체 종료가 될 것 입니다. 어플이 아예 종료되어 버립니다.

여러분들을 위해 소스를 공개해드리겠습니다.

IntenttestActivity.java

package kr.dpu.intenttest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class IntenttestActivity extends Activity implements OnClickListener{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btnnext = (Button)findViewById(R.id.btnnext);
        Button btnexit = (Button)findViewById(R.id.btnexit);
       
        btnnext.setOnClickListener(this);
        btnexit.setOnClickListener(this);
    }
    public void onClick(View v) {
     // TODO Auto-generated method stub
     switch(v.getId()) {
     case R.id.btnnext :
      Intent intent = new Intent(this, newActivity.class);
      startActivity(intent);
      break;
     case R.id.btnexit :
      moveTaskToBack(true);
      finish();
      android.os.Process.killProcess(android.os.Process.myPid());
      break;
     }
    }
}


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <Button
        android:id="@+id/btnnext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="들어가기" />
    <Button
        android:id="@+id/btnexit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="종료" />
</LinearLayout>


newActivity.java

package kr.dpu.intenttest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class newActivity extends Activity implements OnClickListener{
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.new_main);
    
     Button btnexit = (Button)findViewById(R.id.btnexit);
     btnexit.setOnClickListener(this);
 }
 public void onClick(View v) {
  // TODO Auto-generated method stub
  finish();
 }
}


new_main.java

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="새로운 액티비티"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    <Button
        android:id="@+id/btnexit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="종료" />
</LinearLayout>

java, xml소스입니다. 여러분들께 많은 도움이 되시길 바라면서 포스팅을 마치겠습니다.^^
오늘도 행복한 하루되시길 기원합니다.~!





댓글(16)