2014년 6월 4일 수요일

[Android] 뒤로 가기 버튼 눌러 종료하기(Back Press Close)


뒤로 가기 버튼 눌러 종료하기

(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();
  }
}





댓글 2개: