1

背景:我有一个应用程序已经发布了一年多,最后一次更新是在三个月前。从来没有遇到过 ANR 错误的问题。该应用程序相当稳定,超过 100,000 次活跃安装。

最近,我从我的应用程序的各个地方收到了 ANR keyDispatchingTimedOut 报告(其中大约 30 个),所有这些报告都与 com.carrieriq.iqagent.client 有关。

例如,达尔维克线程:

“主要”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=默认句柄=-1345026000
  在 com.carrieriq.iqagent.client.NativeClient.acquire(NativeClient.java:~35)
  - 等待 threadid=2 (HeapWorker) 持有的锁 (a java.lang.Object)
  在 com.carrieriq.iqagent.client.IQClient.(IQClient.java:115)
  在 com.carrieriq.iqagent.client.IQClient.(IQClient.java:105)
  在 android.app.AlertDialog$Builder.create(AlertDialog.java:826)
  在 android.app.AlertDialog$Builder.show(AlertDialog.java:864)
  在 com.myapp.button.pushed$SomeRunnable.run(SomeRunnable.java:299)

-- SomeRunnable.java 第 299 行只是 adialog.show();

报告中唯一的其他线程是:

“HeapWorker”守护进程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=默认句柄=1174376
  在 com.carrieriq.iqagent.client.NativeClient.clientShutdown(本机方法)
  在 com.carrieriq.iqagent.client.NativeClient.release(NativeClient.java:81)
  在 com.carrieriq.iqagent.client.IQClient.disconnect(IQClient.java:341)
  在 com.carrieriq.iqagent.client.IQClient.finalize(IQClient.java:354)
  在 dalvik.system.NativeStart.run(本机方法)

我在网上搜索了一下,发现有人声称它有电池问题: http ://forums.androidcentral.com/sprint-optimus-s/45729-ever-wondered-what-iqagent.html

所以问题是,我不确定我应该怎么做(检查包是否存在并警告用户可能?)或者这真的是原因吗?

这个包显示在我得到的所有 ANR 跟踪中。(所以只有 sprint 用户一直有这个问题)

4

1 回答 1

0

这似乎是 IQclient 中的合法竞争条件。有趣的部分是 HeapWorker 线程在您的线程尝试处理按钮按下时关闭。如果您能弄清楚该线程被关闭的原因,您可能会找到解决方案。可悲的是,如果没有复制,这可能很难。

于 2011-09-17T02:57:49.470 回答