我已经看过很多关于这个问题的问题,但我对任何答案都不满意。
我希望它有一个class ConnectionController implements Runnable
负责打开服务器的连接,读取和写入消息,并且从应用程序开始到结束都必须实例化。
我有一个class MainActivity extends from Activity
onCreate它将实例化一个ConnectionController对象。
该connectionController必须更改MainActivity上的某些字段(最终在其他活动中),例如状态连接ImageView,甚至收到消息TextView。
因为connectionController是一个我无法访问元素的线程(CalledFromWrongThreadException(只有创建视图层次结构的原始线程才能触及它的视图)。
您建议使用什么?我看到了具有异步任务,处理程序,myUIRunnable的解决方案,但我不明白这种情况的最佳解决方案是什么。
提前致谢。
答案 0 :(得分:1)
该connectionController必须更改MainActivity上的某些字段(最终在其他活动中),例如状态连接ImageView,甚至收到消息TextView。
不,它没有。它需要安排才能更改这些内容。由于您出于某种原因选择将“控制器”设置为线程,因此控制器无法自行更改这些UI元素。
您建议使用什么?
在post()
上使用View
。或者,在runOnUiThread()
上使用Activity
。或者,使用Handler
。