뒤로 가기 버튼 눌러 종료하기
(Back Press Close)
'뒤로'버튼을 한번 더 누르시면 종료됩니다.
라는 확인창이 뜨고 뒤로버튼을 한번 더 누르면 앱이 종료되는 경우를 많이 봤을 것입니다. 요즘 대부분의 어플리케이션이 이러한 종료 방식을 사용하고 있으며 사용자 편의성을 잘 고려한 기능이라고 생각합니다.
라는 확인창이 뜨고 뒤로버튼을 한번 더 누르면 앱이 종료되는 경우를 많이 봤을 것입니다. 요즘 대부분의 어플리케이션이 이러한 종료 방식을 사용하고 있으며 사용자 편의성을 잘 고려한 기능이라고 생각합니다.
- 뒤로 버튼을 누른 후 2초 이상 지났으면, 마지막 뒤로 버튼 눌린 시간을 현재 시간으로 다시 초기화하고 '뒤로'버튼을 한번 더 누르시면 종료됩니다. 라는 확인창을 다시 띄워줌.
- 뒤로 버튼을 누른 후 2초 이상 지나지 않았으면, 어플리케이션을 종료.
활용예제
public class BackPressCloseSystem {
private long backKeyPressedTime = 0;
private Toast toast;
private Activity activity;
public BackPressCloseSystem(Activity activity) {
this.activity = activity;
}
public void onBackPressed() {
if (isAfter2Seconds()) {
backKeyPressedTime = System.currentTimeMillis();
// 현재시간을 다시 초기화
toast = Toast.makeText(activity,
"\'뒤로\'버튼을 한번 더 누르시면 종료됩니다.",
Toast.LENGTH_SHORT);
toast.show();
return;
}
if (isBefore2Seconds()) {
programShutdown();
toast.cancel();
}
}
private Boolean isAfter2Seconds() {
return System.currentTimeMillis() > backKeyPressedTime + 2000;
// 2초 지났을 경우
}
private Boolean isBefore2Seconds() {
return System.currentTimeMillis() <= backKeyPressedTime + 2000;
// 2초가 지나지 않았을 경우
}
private void programShutdown() {
activity .moveTaskToBack(true);
activity .finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
}
public class MainActivity extends Activity {
private BackPressCloseSystem backPressCloseSystem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
backPressCloseSystem = new BackPressCloseSystem(this);
// 뒤로 가기 버튼 이벤트
}
@Override
public void onBackPressed() {
backPressCloseSystem.onBackPressed();
}
}
public class BackPressCloseSystem {
private long backKeyPressedTime = 0;
private Toast toast;
private Activity activity;
public BackPressCloseSystem(Activity activity) {
this.activity = activity;
}
public void onBackPressed() {
if (isAfter2Seconds()) {
backKeyPressedTime = System.currentTimeMillis();
// 현재시간을 다시 초기화
toast = Toast.makeText(activity,
"\'뒤로\'버튼을 한번 더 누르시면 종료됩니다.",
Toast.LENGTH_SHORT);
toast.show();
return;
}
if (isBefore2Seconds()) {
programShutdown();
toast.cancel();
}
}
private Boolean isAfter2Seconds() {
return System.currentTimeMillis() > backKeyPressedTime + 2000;
// 2초 지났을 경우
}
private Boolean isBefore2Seconds() {
return System.currentTimeMillis() <= backKeyPressedTime + 2000;
// 2초가 지나지 않았을 경우
}
private void programShutdown() {
activity .moveTaskToBack(true);
activity .finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
}
public class MainActivity extends Activity {
private BackPressCloseSystem backPressCloseSystem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
backPressCloseSystem = new BackPressCloseSystem(this);
// 뒤로 가기 버튼 이벤트
}
@Override
public void onBackPressed() {
backPressCloseSystem.onBackPressed();
}
}
좋은 기능 알아갑니다~
답글삭제잘보고갑니다~!
답글삭제