Android CalledFromWrongThreadException

时间:2012-03-04 12:40:44

标签: android multithreading exception status

我已经看过很多关于这个问题的问题,但我对任何答案都不满意。

我希望它有一个class ConnectionController implements Runnable负责打开服务器的连接,读取和写入消息,并且从应用程序开始到结束都必须实例化。

我有一个class MainActivity extends from Activity onCreate它将实例化一个ConnectionController对象。

该connectionController必须更改MainActivity上的某些字段(最终在其他活动中)​​,例如状态连接ImageView,甚至收到消息TextView。

因为connectionController是一个我无法访问元素的线程(CalledFromWrongThreadException(只有创建视图层次结构的原始线程才能触及它的视图)。

您建议使用什么?我看到了具有异步任务,处理程序,myUIRunnable的解决方案,但我不明白这种情况的最佳解决方案是什么。

提前致谢。

1 个答案:

答案 0 :(得分:1)

  

该connectionController必须更改MainActivity上的某些字段(最终在其他活动中)​​,例如状态连接ImageView,甚至收到消息TextView。

不,它没有。它需要安排才能更改这些内容。由于您出于某种原因选择将“控制器”设置为线程,因此控制器无法自行更改这些UI元素。

  

您建议使用什么?

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