背景信息:我有一个应用程序已经上市一年多了,最后一次更新是在三个月前。从来没有ANR错误的问题。该应用程序相当稳定,100,000多个有效安装。
最近,我从我的应用程序中的不同位置获取了ANR keyDispatchingTimedOut报告(大约30个),并且所有报告都与com.carrieriq.iqagent.client有关。
例如, DALVIK THREADS:
"main" prio=5 tid=1 MONITOR | group="main" sCount=1 dsCount=0 s=N obj=0x40020a30 self=0xcd88 | sysTid=19807 nice=0 sched=0/0 cgrp=default handle=-1345026000 at com.carrieriq.iqagent.client.NativeClient.acquire(NativeClient.java:~35) - waiting to lock (a java.lang.Object) held by threadid=2 (HeapWorker) at com.carrieriq.iqagent.client.IQClient.(IQClient.java:115) at com.carrieriq.iqagent.client.IQClient.(IQClient.java:105) at android.app.AlertDialog$Builder.create(AlertDialog.java:826) at android.app.AlertDialog$Builder.show(AlertDialog.java:864) at com.myapp.button.pushed$SomeRunnable.run(SomeRunnable.java:299)
- SomeRunnable.java第299行只是adialog.show();
报告中唯一的另一个主题是:
"HeapWorker" daemon prio=5 tid=2 NATIVE | group="system" sCount=1 dsCount=0 s=N obj=0x43b55c98 self=0x11eba8 | sysTid=19808 nice=0 sched=0/0 cgrp=default handle=1174376 at com.carrieriq.iqagent.client.NativeClient.clientShutdown(Native Method) at com.carrieriq.iqagent.client.NativeClient.release(NativeClient.java:81) at com.carrieriq.iqagent.client.IQClient.disconnect(IQClient.java:341) at com.carrieriq.iqagent.client.IQClient.finalize(IQClient.java:354) at dalvik.system.NativeStart.run(Native Method)
我在网上搜索,发现人们声称有电池问题: http://forums.androidcentral.com/sprint-optimus-s/45729-ever-wondered-what-iqagent.html
所以问题是,我不确定我应该怎么做(检查包是否存在并警告用户可能?)或者这是真的吗?
这个包显示在我得到的所有ANR迹线中。 (所以只有sprint用户才遇到这个问题)
答案 0 :(得分:0)
这似乎是IQclient中的合法竞争条件。有趣的是,当你的线程试图处理按钮按下时,HeapWorker线程被关闭了。如果你能弄清楚该线程被关闭的原因,你可能会找到一个解决方案。可悲的是,如果没有责备,这可能会很难。