空服务仍会导致ANR

时间:2014-04-07 13:38:36

标签: android android-service android-anr-dialog

我在我的应用上收到了ANR,而且我在查找原因方面遇到了很多麻烦。

通过启动我的应用程序,然后不执行任何操作或按下睡眠按钮来重现错误。睡眠20秒后,应用程序将冻结。重新唤醒手机时会显示ANR信息。

我已将其缩小到这个范围:

Intent startGCM = new Intent(getBaseContext(), GCMService.class);
startGCM.setAction("CONNECT");
startService(startGCM);

这些行作为我主要活动的启动(onCreate)例程的一部分运行。如果我将它们评论出来,则错误消失,手机可以根据需要进入睡眠/唤醒状态,应用程序仍可正常工作。

您会将其视为一项非常简单的服务电话。所以我查看了目标服务,并且摧毁了onStartCommand()函数的整个代码。除了return语句之外,根本没有运行任何代码。但它并没有阻止错误的发生。

我在手机上找到了traces.txt文件,但没有提及我的任何代码。这是主线程转储的第一位,可能也很熟悉:

"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x4127f508 self=0x40f469a0
  | sysTid=12711 nice=0 sched=0/0 cgrp=apps handle=1074286384
  | schedstat=( 1176280531 686300303 3448 ) utm=93 stm=24 core=0
  #00  pc 0000da70  /system/lib/libc.so (epoll_wait+12)
  #01  pc 00014899  /system/lib/libutils.so (android::Looper::pollInner(int)+96)
  #02  pc 00014b01  /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*,         void**)+104)
  #03  pc 000634f3  /system/lib/libandroid_runtime.so     (android::NativeMessageQueue::pollOnce(_JNIEnv*, int)+22)
  #04  pc 0001deb0  /system/lib/libdvm.so (dvmPlatformInvoke+112)
  #05  pc 0004d103  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+394)
  #06  pc 000272e0  /system/lib/libdvm.so
  #07  pc 0002bbe8  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)

任何线索?对我来说任何事情都在等待是没有意义的。是否有另一个文件说明了它在等什么?

0 个答案:

没有答案