티스토리 뷰



이 자료들은 팁스소프트에서 제공하는 [ 알짜배기 ] 프로그램을 이용하면 더 편리하게 볼수 있습니다.
* 알짜배기 프로그램 받기 - http://www.tipssoft.com/bulletin/tb.php/QnA/8406
* 관리자의 Tipssoft 이야기를 들어보세요 ( 트위터 ID : tipssoft )
* 안드로이드 강좌 목록 - http://www.tipssoft.com/bulletin/tb.php/old_bbs/501
안드로이드 시스템에서 어플리케이션을 구성하는 액티비티들은 기본적으로 "Back" 키를 터치하면
종료됩니다. 이 때 어플리케이션의 시작이자 마지막 화면으로 사용되는 메인 액티비티가 종료되면
어플리케이션이 종료되기때문에 많은 어플리케이션이 메인 액티비티에서 빠른 시간 안에 두번의
"Back" 터치가 입력되었을 때 액티비티를 종료하도록 하고 있습니다.
이번 강좌에서는 실수로 인한 어플리케이션의 종료를 방지하기 위해서 "Back" 키가 두번 감지됐을 때
어플리케이션이 종료되도록 하는 방법에 대하여 알아보도록 하겠습니다.
1. 기능 구현하기
기본적으로 액티비티에서 "Back" 키가 눌리면 onBackPressed 메소드가 호출되는데 상위 클래스에서
정의한 onBackPressed 메소드가 액티비티를 종료하도록 구성하고 있기어서 메소드 재정의를 통하여
기능을 변경해주어야 합니다.
두번째 "Back" 키가 눌렸을 때 액티비티를 종료하려면 "Back" 키가 첫번째로 눌렸을 때 키가 눌렸다는
상태를 저장해두어야 하며 일정한 시간 안에 "Back" 키가 다시 들어오는지 확인하여
super.onBackPressed() 메소드를 호출해주어야 합니다.
public class DoubleTouchCloseActivity extends Activity
{
// Back의 상태값을 저장하기 위한 변수
boolean m_close_flag = false;
// 일정 시간 후 상태값을 초기화하기 위한 핸들러
Handler m_close_handler = new Handler() {
public void handleMessage(Message msg) {
m_close_flag = false;
}
};
// ... 관련 없는 코드 생략 ...
// Back 키가 터치되면 호출되는 메소드
public void onBackPressed ()
{
// m_close_flag 가 false 이면 첫번째로 키가 눌린 것이다.
if(m_close_flag == false) { // Back 키가 첫번째로 눌린 경우
// 안내 메세지를 토스트로 출력한다.
Toast.makeText(this, "취소키를 빨리 한번 더 누르시면 종료됩니다.", Toast.LENGTH_LONG).show();
// 상태값 변경
m_close_flag = true;
// 핸들러를 이용하여 3초 후에 0번 메세지를 전송하도록 설정한다.
m_close_handler.sendEmptyMessageDelayed(0, 3000);

} else { // Back 키가 3초 내에 연달아서 두번 눌린 경우
// 액티비티를 종료하는 상위 클래스의 onBackPressed 메소드를 호출한다.
super.onBackPressed();
}
}
protected void onStop()
{
super.onStop();

// 핸드러에 등록된 0번 메세지를 모두 지운다.
m_connect_handler.removeMessages(0);
}
}
2. 실행 화면


댓글