마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

homeKey 인식 방법

+1 추천

 안녕하세요.. 

다름이 아니라 홈키가 눌러졌는지 알수있는 방법이 있나해서요 

방법으로는 

KeyCode == KeyEvent.KEYCODE_HOME

onUserLeaveHint()

이렇게 있다고는 하는데 첫번째는 디벨로퍼 보니 응용프로그램으로 전달이 안된다고 적혀있더라구요.

적힌대로 어플에 아무 이벤트도 전달안되어 첫번째는 못쓰는 걸 확인했습니다. 

 

두번째방법은 빽키 누르면 호출되지 않지만 화면이 백그라운드로 들어가면 불려지내요.

홈키눌렀을때도 ,, 다른액티비티로 이동했을때도 시도 때도 없이 불려집니다. 

 

홈킬를 눌렀을때 서버에다가 신호를 보내야 하는데 벽에 막혀있습니다. 

 

홈키 제어까지는 필요없고 눌려진지 알수있는 방법이 있을까요.

조언 부탁드려요,...

  (11,920 포인트) 님이 2013년 6월 17일 질문

1개의 답변

+2 추천
 
채택된 답변
@Override
 protected void onUserLeaveHint() {
  // TODO Auto-generated method stub
  super.onUserLeaveHint();
 }

이 부분을 선언하면 액티비티가 홈키가 눌렸을 경우 라이프사이클이 onUserLeaveHint -> onPause 가 불리게 됩니다.

일반적이면 라이프 사이클과는 다르죠. 그래서 onUserLeaveHint 이 부분에서 flag를 하나 선언해주시고 onPause에서

flag값을 체크해주시면

홈키로 인한 onPause인지 아닌지 구별 해주시면 onPause가 기존 라이프사이클인지 아니면 홈키에 의한 onPause인지

구분하실 수 있을거라 생각합니다! 도움이 되셨으면 좋겠습니다!
안드로메다개발자 (8,830 포인트) 님이 2013년 6월 17일 답변
 님이 2013년 6월 17일 채택됨
답변감사합니다.

말씀하신 사항은 다 실행해보았습니다만... 현액티비티 화면에서
다른액티비티로 이동할시에도 그 함수가 불려집니다.
단순히 빽키에서만 안불려질뿐.... 화면 자체가 백그라운드로 들어가면
무조건 불려집니다. 그러므로 플래그를 하나두어도 소용이 없었습니다.

즉 액티비티를 종료할때는 안불려지고 액티비티가 정지상태가 되면 불려진다는 소리 입니다. 그러므로 해당 액티비티에서 다른액티비티로 이동하면 호출됩니다.
어찌하면 좋을꼬 ㅎㅎ
맞습니다. 지금 현재로는 홈키는 특수키로 분리되어서 시스템적으로 제어가 불가능하다 들었습니다. 액티비티가 불릴때도 같이 flag가 불린다면 액티비티가 이동할때도 flag를 주면 어떨까요 ?
그래서
if(flag == true && flag1 == true) {
}else if(flag == true && flag1 == false){
}
이런식으로 코드를 주시는건 어떨지요. 도움이 되셨으면 좋겠네요.
답변감사합니다 ^^

안드로님의 조언을 얻어 해결하였습니다.
너무 깊게 생각하면 오히려 안되는 경우가 있군요
 너무너무 감사합니다.
안녕하세요 현업 안드로이드 개발자 입니다. 저도 같은 문제에 봉착해 있는데요.. 액티비티가 이동할때도  Flag 를 준다는 말이 무슨 뜻인지 잘 이해가 되지 않네요.. 혹시 좀 더 구체적으로 설명해 주실 수 있으신가요?
...