ANDROID] Back Key 두번눌러서 끄기
import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
public class BackPressCloseHandler {
private long backKeyPressedTime = 0;
private final long BACKKEY_WAIT_TIME = 2000;
private Toast toast;
private Activity activity;
BackPressCloseHandler(Activity context) {
this.activity = context;
}
public void onBackPressed() {
if( System.currentTimeMillis() > backKeyPressedTime + BACKKEY_WAIT_TIME ) {
backKeyPressedTime = System.currentTimeMillis();
showGuide();
return;
}
if( System.currentTimeMillis() <= backKeyPressedTime + BACKKEY_WAIT_TIME ){
activity.finish();
toast.cancel();
}
}
private void showGuide() {
toast = Toast.makeText(activity, "\'back\'버튼을 한번 더 누르시면 종료됩니다", Toast.LENGTH_SHORT);
toast.show();
}
}
BackPressCloseHandler Class를 등록후 사용한다.
사용하기전에는...
public class Activity extends Activity {
private BackPressCloseHandler bHandler;
protected void onCreate(~~) {
bHandler = new BackPressCloseHandler(this); //핸들러 객체 생성
...
}
public void onBackPressed() {
bHandler.onBackPressed();
}
}
해주면된다.
주의할점은 onBackPressed 매서드가 만약에 super.onBackPressed() 를 call한다면 BackButton이 눌리면 super class로 먼저 call이되기때문에 백날 bHandler를 해줘봐야 Activity가 super class에서 먼저 finish되고 call된다. 그러니깐 만약 overriding한 onBackPressed 매서드에 super.onBackPressed가 있다면 살포시 주석처리를 해주면 된다.
소스는 http://javacan.tistory.com/235 를 참고하였다.