ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백키 두번으로 어플 종료 시키는 간단한 방법
    안드로이드/학습&강좌 2011. 5. 22. 22:08

    요즘의 어플들을 살펴보다 보면 '뒤로'버튼을 한번 더 누르시면 종료됩니다. 이 문구를 자주 보게 된다.

    요새의 대세란다. 구현함에 있어서 별 어려울 것 없어서 그냥 소개 해 보자고 한다.

    간단하게 구성한 화면 먼저 보자.


    문구는 요새 어플 들이 쓰는 문구 그대로를 따라 했고, 토스트 메시지가 사라지기 전에 Back 키를 한번더 누르면

    종료 되며, 사라지고 난 후에는 다시 이 토스트 메시지가 나타난다.

    시간이 지나면 이 메시지를 전환 시키는 것인데 handler를 이용한 메시지 전달 방식을 이용 했다.

    코드를 살펴 보자.

    ExitTestActivity.java

    package com.tistory.ememomo;

    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;

    public class ExitTestActivity extends Activity {
     Button backBtn;
     private boolean mFlag = false;
     
     //타이머를 설정하기 위한 핸들러
     private Handler mHandler;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            mHandler = new Handler() {
       @Override
       public void handleMessage(Message msg) {
        if(msg.what == 0)
        {
         mFlag = false;
         //2초가 지나면 다시 Falg 를 false로 바꾼다.
         Log.d("", "handleMessage mFlag : " + mFlag);
        }
        
       }
      };
            backBtn = (Button)findViewById(R.id.backBtn);
            backBtn.setOnClickListener(new OnClickListener() {
       
       @Override
       public void onClick(View v) {
        onBackPressed();
       }
      });
        }
       
        @Override
        public void onBackPressed() {
         if(!mFlag)
      {
       Toast.makeText(ExitTestActivity.this, "'뒤로'버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show();
       mFlag = true;
       mHandler.sendEmptyMessageDelayed(0, 1000*2);
       //2초 후에 handleMessage에 메시지를 전달한다.
      }
      else{
       super.onBackPressed();
      }
        }
    }



    코드 자체에 주석을 달아놨으니 이해하는데 별 무리가 없을 것이다.

    잘 사용해 주시길 바란다~~

    댓글

COPYRIGHT 2010 EpoNg. ALL RIGHTS RESERVED.