android 뒤로가기 두번으로 앱종료 하기

android의 특징중 하나인 뒤로가기 버튼이 있습니다. 뒤로가기 버튼을 통해 대부분의 앱을 종료 하기 때문에 android사용자들은 앱을 종료 하기 위해서 뒤로가기를 연속적으로 누르는 행동을 많이 합니다. 그렇기 때문에 종료의 의사가 아니고 뒤로가기를 눌렀는데 앱이 종료되는 경우가 종종 생기는데요.
이런 경우에 대비해서 국내 앱들은 뒤로가기를 두번연속으로 누른경우에만 앱을 종료 시키는 방법을 많이 사용 합니다. 해외 앱들은 굳이 이런기능들을 사용하지 않는 경우가 많은걸 보면 국가별 사용하는 방식의 차이가 있나보다란 생각도 하게 됩니다.

뒤로가기 두번연속으로 눌렀을때 종료하는 방법은 쉽게 구현 할수 있습니다.

우선 activity에서 뒤로가기 이벤트를 제어 해야 합니다.

@Override
    public void onBackPressed() {
       super.onBackPressed();
    }
onBackPressed 함수를 오버라이드 해줍니다.

private final long FINISH_INTERVAL_TIME = 2000;
private long backPressedTime = 0;
우선 누르는 이벤트사이의 시간 간격을 위해 FINISH_INTERVAL_TIME을 지정해 줍니다.
설정된 시간 이내에 연속적으로 뒤로가기가 이벤트가 일어났을때만 종료 되는 것 입니다.
설정해 놓은 시간이 지나면 다시 두번 눌러야 종료되는 상태로 초기화 됩니다.
backPressedTime을 통해 첫번째 뒤로가기 이벤트가 일어난 시간을 알고 있어야 합니다.

@Override
    public void onBackPressed() {
        long tempTime = System.currentTimeMillis();
        long intervalTime = tempTime - backPressedTime;

        if (0 <= intervalTime && FINISH_INTERVAL_TIME >= intervalTime) {
            super.onBackPressed();
        } else {
            backPressedTime = tempTime;
            Toast.makeText(this, "one more", Toast.LENGTH_SHORT).show();
        }


    }
실제 구현부 입니다.
시스템 시간을 통하여 연속으로 눌렸을대를 체크해주는 소스입니다.
첫번째 눌렸고 인터벌 시간 이후라면 한번더 뒤로가기를 눌러 달라는 메세지를 보여줍니다.



실행하면 첫번재 이벤트에  토스트 메세지가 표시되며
두번째 이벤트에 종료되는 것을 알수 있습니다.


댓글

주간 인기글

[정보] 인스타그램은 당신의 소리를 '듣고' 있을 수도 있습니다

안드로이드에서 당겨서 새로고침(SwipeRefreshLayout) 쉽게 구현하기

[앱 디자인] 벤치마킹에 유용한 사이트

[앱 디자인] 디자인 가이드 만들기 - 아이폰

[AWS] WinSCP 를 이용해 Linux 인스턴스로 파일 전송하기