2011-05-09 83 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