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 를 참고하였다.
'소프트웨어 > Android/Java/Ndk' 카테고리의 다른 글
Android] ArrayList복사시 (깊은복사와 얕은복사) (1) | 2013.11.09 |
---|---|
Android] APP을 종료하지 않고 HOME으로 빠지기 (1) | 2013.11.09 |
Android] WifiManager를 이용해서 앱 탈출시 Wifi 꺼버리기 (0) | 2013.11.09 |
JAVA] String class의 .equals()과 .equalsIgnoreCase()의 차이 (0) | 2013.11.04 |
Android] ListActivity에서 CustomAdapter 생성 (0) | 2013.11.03 |
Android] ListActivity에서 OnClickListener 적용시키기 (0) | 2013.11.03 |
Android] WifiManager 업데이트( .startScan()) (0) | 2013.11.03 |