2012년 3월 11일 일요일

백키 두번 눌러 종료하기(안드로이드)

백키를 연속으로 두 번 누르면 종료되는 어플이 슬슬 많아지고 있다.
어떻게 구현해야 할까~?


// 핸들러, 플래그 선언.
private Handler mHandler;
private boolean mFlag = false;


// BACK Handler -> onCreate 안에 넣어주세요!
mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        if(msg.what == 0) {
            mFlag = false;
        }
    }
};



/*
  백키 이벤트를 가로채서 플래그값 확인 후 처리.
  플래그 값이 true인 상태에서 2초 이내에 백키를 누르면 액티비티 종료.
*/

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        if(!mFlag) {
            Toast.makeText(list.this"'뒤로'버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show();
            mFlag = true;
            mHandler.sendEmptyMessageDelayed(02000);
            return false;
        } else {
            finish();
        }
    }
    return super.onKeyDown(keyCode, event);
}


설정 시간(현재 2초)은 sendEmptyMessageDelayed 숫자값 조절.
백키 이벤트는 onCreate 바깥에 - v -*

개인적으로 어플 종료할 때 이 방법을 선호한다.
한 번 눌러 종료되는 건 잘못 눌리는 일도 많아서 살짝 그렇고, 메뉴에 넣자니 번거롭고
얼럿창 역시 쵸큼 번거롭고. 무튼─ 즐거운 프로그래밍!

댓글 없음:

댓글 쓰기