Back버튼을 두 번 눌러 종료 -- Android



현재 만드는 소스에는 필요없는 기능이지만 거의 표준처럼 사용되는 기능이기에 나중에 쓰기 위해 정리해둔다. 이미지라던가 소스에 줄 수를 표시하는 건 본인이 싫어하므로 제거했으며, 이미지 등은 출처에서 확인 바란다. (물론 증명된 소스는 아니므로 혹시라도 구현 시 문제가 있다면 추후 수정하도록 하겠다)


안드로이드폰을 사용하다가 무심결에 터치 버튼이 눌러져서 본의 아니게 앱이 종료된 경험을 많은 사람들이 가지고 있을 것이다.

 

아래 소스는 앱 화면에서 'Back' 버튼을 눌렀을 때, 바로 앱이 종료되는 것이 아니라 종료를 위해서 다시 한번 'Back' 버튼을 눌러달라는 메시지를 띄워준다. 그리고는 지정된 시간(여기서는 2초) 이내에 다시 'Back' 버튼이 눌려지면 실제로 앱에서 빠져나오게 된다.

 

package com.huikyun.tester;


import java.util.Calendar;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.widget.Toast;

 

public class BackKeyEventActivity extends Activity {

    private static final String TAG = "BackKeyEventActivity";

    private static final int MSG_TIMER_EXPIRED = 1;

    private static final int BACKKEY_TIMEOUT = 2;

    private static final int MILLIS_IN_SEC = 1000;

    private boolean mIsBackKeyPressed = false;

    private long mCurrTimeInMillis = 0;


    @Override

    public void onBackPressed() {

       // super.onBackPressed();


        if (mIsBackKeyPressed == false) {

            mIsBackKeyPressed = true;

            mCurrTimeInMillis = Calendar.getInstance().getTimeInMillis();

            Toast.makeText(this, "종료를 원하시면 다시 \"Back key\"
           
눌러 주시기 바랍니다.", Toast.LENGTH_SHORT).show();


            startTimer();

        } else {

            mIsBackKeyPressed = false;


            if (Calendar.getInstance().getTimeInMillis() <=
               (mCurrTimeInMillis + (BACKKEY_TIMEOUT * MILLIS_IN_SEC))) {

                finish();

            }

        }

    }


    private void startTimer() {

        mTimerHandler.sendEmptyMessageDelayed(MSG_TIMER_EXPIRED, BACKKEY_TIMEOUT * MILLIS_IN_SEC);

    }


    private Handler mTimerHandler = new Handler() {

        @Override

        public void handleMessage(Message msg) {

            // super.handleMessage(msg);


            switch (msg.what) {

            case MSG_TIMER_EXPIRED: {

               mIsBackKeyPressed = false;

            }


                break;

            }

        }

    };

}

 
출처 : http://huikyun.tistory.com/398


덧글

댓글 입력 영역