안드로이드 앱을 종료할 때 뒤로가기 버튼을 두번 눌러서 종료하는 경우가 많다. 시간 체크하면 될 것 같았는데, 역시나 안드로이드에서는 이미 많이 사용하고 있는지 검색하면 아래(BackPressCloseHandler 클래스)와 같은 소스코드로 만들어진 자료들이 바로 나온다.(동일한 소스코드 자료들이 많아서 어디에 출처를 둬야 할지 모르겠다...)
뒤로가기 버튼 눌렀을 때 작업을 처리하는 클래스
import android.app.Activity;
import android.widget.Toast;
public class BackPressCloseHandler {
private long backKeyPressedTime = 0;
private Toast toast;
private Activity activity;
public BackPressCloseHandler(Activity context) {
this.activity = context;
}
public void onBackPressed() {
if (System.currentTimeMillis() > backKeyPressedTime + 2000) {
backKeyPressedTime = System.currentTimeMillis();
showGuide();
return;
}
if (System.currentTimeMillis() <= backKeyPressedTime + 2000) {
activity.finish();
toast.cancel();
}
}
private void showGuide() {
toast = Toast.makeText(activity, "\'뒤로\'버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT);
toast.show();
}
}
사용할 Activity 클래스 생성시 BackPressCloseHandler 클래스 인스턴스 생성, 그리고 뒤로가기 버튼이 눌렸다 떼어졌을 때 onBackPressed 메소드 호출.
public class MainActivity extends Activity {
private BackPressCloseHandler backPressCloseHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
backPressCloseHandler = new BackPressCloseHandler(this);
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
backPressCloseHandler.onBackPressed();
}
}