繁体   English   中英

如何从不同线程中的不同类修改textview-Android Studio

[英]how to modify a textview from diffent class in different thread - Android Studio

首先,我不是专家,因此我希望以正确的方式进行解释,并希望获得不太复杂的答复。

我有在新线程中运行的主要活动。 我们将其称为“线程1”,一些操作(服务器和客户端之间的交换数据。线程1永远保持活动状态。

一段时间后,主活动打开一个新活动,我们称之为活动2活动2有一个textView,我们称之为textView-2。

一段时间后,正在运行的thread-1调用Java类内部的静态方法,该方法必须实时修改textView。

我怎样才能做到这一点? 提前非常感谢您。 福斯托

您不能(也不应该)做您描述的事情。 启动第二个Activity ,第一个Activity将不再处于运行状态。 它们的生命周期回调在同一线程上调用: Activity的主线程。 您的第一个Activity应该与第二个Activity没有直接关系。 如果确实需要辅助后台线程,则必须手动启动它或使用AsyncTask甚至RxJava的观察者之类的东西。 但是,您不能直接更改View对象的状态,而在其他线程上,只能在主线程的上下文中运行时才能更改它们。

在故事的结尾,我以这种方式解决了:

  • 活动2启动一个侦听器线程(间隔一段时间)
  • 当要更改活动2的TextView时,活动1的线程1将消息发送到侦听器(修改侦听器的静态var的值)
    • 侦听器收到消息并将其发送到Activity-2(通过句柄),然后最终更改TextView
    • 我插入了一个从while周期退出的控件,当不再需要它时

我希望可以帮助别人...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM