2011-10-11 73 views
0

我有一個應用程序,我們正在提供遠程用戶界面(其中包含所有按鈕來控制媒體服務器)。ANR異常處理

問題是當我們點擊任何一個按鈕時,我們正在執行相應的動作,這是很長的UPNP網絡操作。

因此,當我們連續按下按鈕,最後該設備出現ANR異常並強制關閉應用程序。我對這個ANR異常做了一些研究,最後發現,我們可以使用Thread或AsyncTask來解決這個問題。

但在我的應用程序,因爲我們提供了這麼多的按鈕,當用戶按下按鈕繼續,可能inturn導致很多應用程序中創建線程。

請給我你的建議。

如何克服這個問題?

感謝

回答

1

對使用​​的AsyncTask的諸多優點是它管理的線程(和線程池)爲您。所以如果你使用AsyncTask,你不應該有創建太多線程的問題。另外,如果你關心的是創建太多的AsyncTasks,可以考慮把這些任務放在一個成員變量(比如Queue或者ArrayList)中並且跟蹤它們的狀態。如果有人正在處理它,可能不需要啓動另一個。或者您可以刪除不再需要結果的任務。

1

只需跟蹤按鈕在成員變量中單擊並使用One AsyncTask就可以在隊列中執行此長時間運行操作。

如果可能的話,避免多線程進行這些操作。