안드로이드 개발 질문/답변
(글 수 45,052)
잠금화면 앱을 만드는 중에 문제가 하나 있습니다.
화면 잠금상태에서 홈버튼을 클릭하면 잠금이 풀려버립니다. -_-;;
다른 버튼을 클릭했을시 dispatchKeyEvent() 이 함수로 이벤트가
전달이 되는데 HomeButton에 대해서만 전달이 되지 않고
바로 홈화면으로 넘어가게 됩니다.
만들려는 앱이 잠금화면이기 때문에 홈화면으로 바로 넘어가 버리는게
문제가 되는데요.
혹시 방법을 알고 계신분 있으신가요???
개발자가 상팔자
2011.02.21 09:26:39
홈키에 대해서는 이벤트를 받을 수 없습니다.
하지만 어플리케이션의 생명주기를 잘 이해하면 편법으로 가능은 합니다.
해본지 오래돼서 가물가물한데 OnPause였나... 하는 메소드를 오버라이딩해서
자동생성 코드중에 super.OnPause를 지우면 됩니다.
(별도의 동작 필요시 다른 코드를 넣으면 됩니다.)
그러면 OnPause버튼에 대한 명령이 없어지기때문에 홈버튼을 눌러도 아무 반응이 없습니다 :-)
2011.02.21 10:58:53
02-21 01:59:17.770: ERROR/AndroidRuntime(789): android.app.SuperNotCalledException: Activity {com.SimpleScreenLock/com.SimpleScreenLock.UnguardService$UnguardActivity} did not call through to super.onPause()
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3338)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3305)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3288)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at android.app.ActivityThread.access$2500(ActivityThread.java:125)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2040)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at android.os.Handler.dispatchMessage(Handler.java:99)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at android.os.Looper.loop(Looper.java:123)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at java.lang.reflect.Method.invokeNative(Native Method)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at java.lang.reflect.Method.invoke(Method.java:521)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-21 01:59:17.770: ERROR/AndroidRuntime(789): at dalvik.system.NativeStart.main(Native Method)
02-21 01:59:18.260: WARN/ActivityManager(62): Activity pause timeout for HistoryRecord{43efc960 com.SimpleScreenLock/.UnguardService$UnguardActivity}
낭만폭풍님이 알려주신데로 해보니 위와 같은 Log를 출력하면서 죽습니다.
Activity pause timeout for HistoryRecord 문구로 추측해보면 ActivityManager에서 죽이는 것 같습니다.
2011.02.22 14:36:49
수정합니다....
OnPause에서 슈퍼클래스의 메소드 실행을 무시해도
홈버튼에는 어쩔수 없이 OnPause로 넘어가는 명령이 발생합니다.
저도 잘 구현이 된줄 알았는데 다시 확인해보니 홈버튼에 원하는 동작을 넣을순 있지만
아예 홈으로 가는 명령 자체를 무시할 순 없더라구요
홈버튼을 눌렀을때 명령을 수행하고 다시 액티비티를 불러오는 방식도 아닌것같고....
저도 좀 더 연구해봐야겠습니다 ㅠㅠ
OnPause에서 슈퍼클래스의 메소드 실행을 무시해도
홈버튼에는 어쩔수 없이 OnPause로 넘어가는 명령이 발생합니다.
저도 잘 구현이 된줄 알았는데 다시 확인해보니 홈버튼에 원하는 동작을 넣을순 있지만
아예 홈으로 가는 명령 자체를 무시할 순 없더라구요
홈버튼을 눌렀을때 명령을 수행하고 다시 액티비티를 불러오는 방식도 아닌것같고....
저도 좀 더 연구해봐야겠습니다 ㅠㅠ



