【发布时间】:2015-02-03 00:15:53
【问题描述】:
我正在使用的应用程序在屏幕打开时可以正常工作,并且可以在任何时间长度内正常工作,但是一旦手机进入睡眠状态并经过 10 秒,我的 logcat 就会出现错误,
I/art Thread[5,tid=318,WaitingInMainSignalCatcherLoop,Thread*=0xaf60e400,peer=0x12c00080,"Signal Catcher"]: reacting to signal 3
我提取了跟踪文件并试图了解导致此问题的原因并阅读了androids page 的应用程序性能,我发现这是因为广播接收器在 10 秒内没有执行,
BroadcastReceiver 未在 10 秒内完成执行。
通过阅读trace文件,我认为这与正在播放的屏幕超时和未完成的动作有关。
"ActivityManager" prio=5 tid=16 TimedWaiting
| group="main" sCount=1 dsCount=0 obj=0x12d41970 self=0xac884400
| sysTid=859 nice=-2 cgrp=apps sched=0/0 handle=0xb50e9e80
| state=S schedstat=( 443987410679 259509083288 699634 ) utm=18416 stm=25982 core=2 HZ=100
| stack=0xa14fa000-0xa14fc000 stackSize=1036KB
| held mutexes=
at java.lang.Object.wait!(Native method)
- waiting on <0x03423764> (a com.android.server.am.ActivityManagerService$6)
at java.lang.Object.wait(Object.java:422)
at com.android.server.am.ActivityManagerService.dumpStackTraces(ActivityManagerService.java:4969)
- locked <0x03423764> (a com.android.server.am.ActivityManagerService$6)
at com.android.server.am.ActivityManagerService.dumpStackTraces(ActivityManagerService.java:4946)
at com.android.server.am.ActivityManagerService.appNotResponding(ActivityManagerService.java:5187)
at com.android.server.am.BroadcastQueue$AppNotResponding.run(BroadcastQueue.java:171)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
at com.android.server.ServiceThread.run(ServiceThread.java:46)
有人可以指出正确的方向来解决这个问题吗? 如何找到问题的根本原因。
我尝试过的(在我的无知中)我尝试删除代码中的所有广播接收器,但这并没有帮助。显然。 我摆脱了唤醒锁以尝试解决问题,但这也没有帮助。
非常感谢任何帮助。
【问题讨论】:
-
请发布您的源代码。
-
对此是否有任何一般性反馈?我无法发布代码,因为该项目处于 NDA 之下,而且代码庞大且分散。请根据您在错误日志中看到的内容给我任何反馈
标签: android performance broadcastreceiver android-wake-lock android-anr-dialog