저작권 안내: 저작권자표시 Yes 상업적이용 No 컨텐츠변경 No

스프링5 입문

JSP 2.3

JPA 입문

DDD Start

인프런 객체 지향 입문 강의

'BackPressCloseHandler'에 해당되는 글 1건

  1. 2013.01.29 [팁] 안드로이드에서 백버튼 두 번 눌러 종료하기 (4)

안드로이드에서 2회 연속 백버튼을 눌러서 앱을 종료시키는 경우가 흔한데, 이 기능은 많이 사용되므로 다음과 같이 별도 클래스로 기능을 분리하면 향후 기능 재사용이 편리하다.


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

}


}


BackPressCloseHandler의 구현은 간단하다.

  • backKeyPressedTime은 백버튼이 눌린 마지막 시간을 기록한다.
  • onBackPressed() 메서드는 현재 시간이 마지막 백버튼 누른 시간으로부터 
    • 2초 이상 지났으면, 마지막 백버튼 눌린 시간을 현재 시간으로 갱신하고 showGuide()를 실행한다.
    • 2초 이상 지나지 않았으면, Activity를 종료한다.
    • 참고로, 2초는 Toast.LENGTH_SHORT의 기본 값이다.
  • showGuide() 메서드는 Toast를 이용해서 메시지를 출력한다.

2회 연속 백버튼 누를 때 종료시키고 싶은 Activity가 있다면, 다음과 같이 사용한다.

  • BackPressCloseHandler 타입의  backPressCloseHandler 필드를 추가한다.
  • onCreate() 메서드에서 BackPressCloseHandler 객체를 생성해서 필드에 할당한다.
  • onBackPressed() 메서드에서 backPressCloseHandler.onBackPressed()를 호출한다.
아래 코드는 실제 적용한 코드의 일부를 발췌한 것이다.


public class HomeActivity extends Activity ... {


private BackPressCloseHandler backPressCloseHandler;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.home_layout);

...

backPressCloseHandler = new BackPressCloseHandler(this);

}


@Override

public void onBackPressed() {

backPressCloseHandler.onBackPressed();

}

}


Posted by 최범균 madvirus

댓글을 달아 주세요

  1. morcavon 2014.04.14 22:58 신고  댓글주소  수정/삭제  댓글쓰기

    유용한 정보 감사합니다 :-)

  2. Thankx 2015.05.28 21:12 신고  댓글주소  수정/삭제  댓글쓰기

    감사합니다. ㅜ.ㅜ~

  3. 므시칸곰틔군 2015.08.04 11:27 신고  댓글주소  수정/삭제  댓글쓰기

    정보 감사합니다.

  4. 전동화 2016.12.19 14:25 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다.