뭔가 이상한 점이 있습니다. 내 활동 시간이 정지되고 시스템에서 ARN이 발생합니다.활동이 응답하지 않음 시작 시간의 절반도
얼마 전에 ANG 문제없이 AndEngine + PhysicsBox2d 확장 프로그램에서 간단한 게임을 썼습니다. 지난 며칠 동안 코드를 리팩터링하면서 시작 구성을 처리하고 코드를 이동시켜 응집력을 향상시키는 두 가지 클래스를 소개했습니다. 행동 변화가 전혀 구현되지 않는 것이 이상적입니다. 그러나 이제 앱을 열고 정상적으로 닫으면 두 번째로 열면 앱이 멈추고 시간이 초과 될 때까지 강제 종료됩니다. 다음은 로그의 출력입니다 :
09-03 19:41:40.416: ERROR/ActivityManager(138): ANR in mp.andreabarbadoro.mama (mp.andreabarbadoro.mama/.DaisyGameActivity)
09-03 19:41:40.416: ERROR/ActivityManager(138): Reason: keyDispatchingTimedOut
09-03 19:41:40.416: ERROR/ActivityManager(138): Load: 2.77/2.62/2.35
09-03 19:41:40.416: ERROR/ActivityManager(138): CPU usage from 13439ms to 0ms ago with 99% awake:
09-03 19:41:40.416: ERROR/ActivityManager(138): 3.2% 116/akmd: 0.9% user + 2.3% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 2% 1679/mp.andreabarbadoro.mama: 2% user + 0% kernel/faults: 3 minor
09-03 19:41:40.416: ERROR/ActivityManager(138): 1.6% 138/system_server: 1% user + 0.5% kernel/faults: 3 minor 1 major
09-03 19:41:40.416: ERROR/ActivityManager(138): 0.5% 228/com.android.launcher: 0.5% user + 0% kernel/faults: 57 minor
09-03 19:41:40.416: ERROR/ActivityManager(138): 0.6% 1697/kworker/0:1: 0% user + 0.6% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 0% 67/yaffs-bg-1: 0% user + 0% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 0% 1699/logcat: 0% user + 0% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 1.4% TOTAL: 1.2% user + 0.2% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): CPU usage from 1542ms to 2104ms later:
09-03 19:41:40.416: ERROR/ActivityManager(138): 10% 138/system_server: 3.5% user + 7.1% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 3.5% 173/InputDispatcher: 3.5% user + 0% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 1.7% 149/SensorService: 1.7% user + 0% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 3.5% 116/akmd: 0% user + 3.5% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 3.5% 1694/akmd: 0% user + 3.5% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 3.5% 1679/mp.andreabarbadoro.mama: 3.5% user + 0% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 3.5% 1688/er$SensorThread: 1.7% user + 1.7% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 0.9% 1697/kworker/0:1: 0% user + 0.9% kernel
09-03 19:41:40.416: ERROR/ActivityManager(138): 10% TOTAL: 7.1% user + 3.5% kernel
09-03 19:41:50.756: WARN/ActivityManager(138): Force finishing activity mp.andreabarbadoro.mama/.DaisyGameActivity
그래서, 어떤 생각이 버그를 찾기 위해 시작은?
편집 : Activity.onDestroy 방법의 중단에 대한 디버그 창에보고 후, 내가 활동이 사망 한 후 android.hardware.sensormanager $ SensorThread가 아직 살아 보를 모십니다 것 같다 방법을 볼 수 있습니다. 이것이 정상적인 동작입니까?
내 ANR은 다중 스레드 환경에서 활동의 수명주기에 대한 하위 최적 이해 때문에 발생하는 미묘한 버그의 증상이었습니다. 당신의 팁은 내가 겪었던 교착 상태를 격리시키는 것을 도왔습니다. 새로운 것을 발견하게 해주셔서 감사합니다! – andijcr