Android调用FromErrorThreadException
我已经看到了很多关于这个问题的问题,但我真的对任何答案都不满意 我希望它有一个Android调用FromErrorThreadException,android,multithreading,exception,status,Android,Multithreading,Exception,Status,我已经看到了很多关于这个问题的问题,但我真的对任何答案都不满意 我希望它有一个类ConnectionController实现Runnable,它负责打开到服务器的连接,读写消息,并且从应用程序开始到结束都必须实例化 我有一个类MainActivity扩展自Activity,一旦创建它就会实例化一个ConnectionController对象 该connectionController必须更改MainActivity(以及最终在另一个Activity)上的某些字段,例如status ConConn
类ConnectionController实现Runnable
,它负责打开到服务器的连接,读写消息,并且从应用程序开始到结束都必须实例化
我有一个类MainActivity扩展自Activity
,一旦创建它就会实例化一个ConnectionController对象
该connectionController必须更改MainActivity(以及最终在另一个Activity)上的某些字段,例如status ConConnections ImageView,甚至是received messages TextView
因为connectionController是一个线程,所以我无法访问元素(称为FromErrorThreadException(只有创建视图层次结构的原始线程才能接触其视图)
您建议使用什么?我看到了包含异步任务、处理程序和MyUIRunable的解决方案,但我不知道对于这种情况,什么是最好的解决方案
提前谢谢
该connectionController必须更改MainActivity(以及最终在另一个Activity)上的某些字段,例如status ConConnections ImageView,甚至是received messages TextView
不,它没有。它需要安排更改这些内容。由于某种原因,您选择将“控制器”设置为线程,因此控制器本身无法更改这些UI元素
你推荐用什么
在视图上使用post()
。或在活动上使用runOnUiThread()
。或使用处理程序
该connectionController必须更改MainActivity(以及最终在另一个Activity)上的某些字段,例如status ConConnections ImageView,甚至是received messages TextView
不,它没有。它需要安排更改这些内容。由于某种原因,您选择将“控制器”设置为线程,因此控制器本身无法更改这些UI元素
你推荐用什么
在视图上使用post()
。或者在活动上使用runOnUiThread()
。或者,使用处理程序我的问题是最好使用什么。无论如何,我选择了处理程序。Thanks@Edu当前位置没有“最佳”,至少在抽象意义上是这样。任何一种都是同样的“最佳”他们自己。考虑到你的应用程序的其余部分,一个是否有意义,只有你才能确定,因为我们只知道你在这里写了什么。我的问题是最好使用什么。无论如何,我选择了处理程序。Thanks@Edu当前位置没有“最佳”,至少在抽象意义上是这样。任何一种都是同样的“最佳”他们自己。考虑到你的应用程序的其余部分,一个是否有意义,只有你才能确定,因为我们只知道你在这里写了什么。