2012-03-04 72 views
1

我見過很多關於這個問題的問題,但我真的不滿意任何答案。Android CalledFromWrongThreadException

我想要它有一個class ConnectionController implements Runnable負責打開連接到服務器,讀取和寫入消息,並且從應用程序的開始到結束都必須實例化。

我有一個class MainActivity extends from Activity onCreate它將實例化一個ConnectionController對象。

connectionController必須更改MainActivity上的某些字段(並最終在其他活動中)​​,例如狀態連接ImageView,或者甚至接收到消息TextView。

因爲connectionController是主題我無法訪問元素(CalledFromWrongThreadException(只有原來的線程創建視圖層次可以觸摸自己的觀點)。

你推薦什麼用?我看到的解決方案與異步任務,處理程序,myUIRunnable但我不明白什麼是造成這種情況的最佳解決方案。

在此先感謝。

回答

1

這connectionController必須改變對MainActivity一些字段(並最終在另一活動),例如狀態連接ImageView,或者甚至接收到消息TextView。

不,不。它需要安排爲那些被改變的東西。由於您選擇使「控制器」成爲某個線程出於某種原因,控制器無法自行更改這些UI元素。

你推薦使用什麼?

View上使用post()。或者,在Activity上使用runOnUiThread()。或者,使用Handler

+0

我的問題是最好的使用。無論如何,我選擇了處理程序。謝謝 – 2012-03-04 13:33:15

+0

@Edu:至少在摘要中沒有「最好的」。其中任何一項都是同樣「最好」的。考慮到應用的*休息*,只有你可以確定,因爲我們只知道你在這裏寫了什麼。 – CommonsWare 2012-03-04 13:51:13

相關問題