我已经看到了很多与此主题有关的问题,但是我对任何答案都不满意。

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

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

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

因为connectionController是一个线程,所以我无法访问元素(CalledFromWrongThreadException(仅创建视图层次结构的原始线程可以触摸其视图)。

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

提前致谢。

最佳答案

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


不,不是的。它需要安排那些事情被改变。由于出于某种原因您选择使“控制器”成为线程,因此控制器无法更改这些UI元素本身。


  您建议使用什么?


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

10-06 01:49