관리 메뉴

드럼치는 프로그래머

[안드로이드] Home Key(홈키) 제어 본문

★─Programing/☆─Android

[안드로이드] Home Key(홈키) 제어

드럼치는한동이 2013. 3. 29. 16:31

안드로이드의 영원한 떡밥..이슈..그것은 바로 Home Key 제어죠.


Home Key 를 막는 것은 애초에 불가능 하지만,


onPause() 가 호출될 때,


1. 홈키를 통해 호출 된 것인지

2. 다른 경로로 호출된 것인지


위의 두가지 경우를 구분해낼 수 있다면, 굉장히 유용하리라 생각됩니다.

일단 안드로이드 액티비티의 라이프 사이클을 보자면,


 



위에 처럼 되어있는데, onPause() 가 호출되는 경우는,


● 다른 어플리케이션에서 메모리를 필요로 할때,

● Home Key 입력으로 인해 어플이 잠시 중지될 때,


크게 두경우가 있겠고, 지금 하는 프로젝트에서 알람을 등록하고,


● 화면 꺼짐 상태에서 등록한 알람이 기동될 때 호출되는 경우.


에도 onPause() 가 호출됨을 알 수 있었습니다.


어플이 Background 에서 Foreground 로 호출될 때의 라이프 사이클에 해당되는 경우입니다.

단순 어플의 경우 onPause() 에서 Home Key 처리를 해 주어도 무방하겠으나,

화면 꺼짐 상태에서 Foreground 로 올라오는 어플의 경우

Home Key 입력에 의한 onPause() 를 구분할 필요성이 발생하게 됩니다.


그래서 존재하는 함수가 아래의 함수 입니다.


--------------------------------------------------------------------

protected void onUserLeaveHint (){

super.onUserLeaveHint();

}

--------------------------------------------------------------------


HomeKey 로 인한 호출의 경우 함수가 호출되는 순서가,


onUserLeaveHint() -> onPause() 의 순서가 됩니다.


따라서 플래그를 하나 설정하여 onUserLeaveHint() 함수에 설정해주고,

onPause() 에서 그 플래그를 확인하는 작업을 한다면,

Home Key 에 의한 onPause() 인지 아닌지를 구분할 수 있습니다.

 

 

[출처] http://m.blog.naver.com/indy9052/120145194386

Comments