2011-05-09 43 views
0

因此,在完成我的所有计算后,为我的应用程序提供了一个AsyncTask,并留下UI更改,直到onPostExicute方法,我意识到我的应用程序从初始化我的类的所有变量创建我的AsyncTask。下面是我在谈论的代码:Android ANR问题,AsyncTask

http://pastebin.com/BB8M9afE (Notes中的东西是一段代码,我与播放)

如果你需要更多的代码,我可以将它张贴。我如何让我的线程类不引起ANR?

代码注释: ColorFloodGame(6,6)用math.random()值填充int的数组。 GuiThreader创建一个ColorFloodGame(6,6),并使其成为“Play”中的一个别名,并创建一个同样的GUI驱动程序。

+0

这是足够的代码,你可以直接添加到这个职位。 '新ColorFloodGame(6,6)'做了多少工作? “新GuiThreader(游戏)”涉及多少工作?这就是我们需要看到的。 – 2011-05-09 19:51:32

+0

为了强调Ted的观点:迄今为止发布的示例代码中有很少(可能为零)的有用信息可以帮助某人帮助回答原始问题。 – 2011-05-09 20:27:57

回答

4

使用“adb shell cat /data/anr/traces.txt”看到最后一个ANR的堆栈爬行。列表中的第一个堆栈用于应用程序的主线程,因此它显示ANR发生时它正在执行的操作。看看在哪里确定你在做什么需要这么长时间。

+0

我的LogCat显示一旦它启动我的播放意图有一个启动超时和空闲超时。那么它说GC释放了157个对象,最后的错误是没有窗口来分派指针动作0 – Cody 2011-05-09 20:37:29