如何在不同的线程中修改来自不同类的textview - Android Studio

时间:2015-03-20 13:38:49

标签: java android android-activity

首先,我不是专家,所以我希望以正确的方式解释并希望得到不太复杂的回复。

我有一个在新线程中运行的主要活动。让我们称之为" thread-1",一些操作(服务器和客户端之间的交换数据)。 线程1永远存在。

主要活动在一段时间后开启一项新活动,让我们称之为活动-2 activity-2有一个textView,我们称之为textView-2。

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

我该怎么做? 非常感谢你提前。 福斯托

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在故事的最后,我以这种方式解决了:

  • Activity-2启动一个监听器线程(一段时间循环)
  • activity-1的Thread-1,当它想要更改activity-2的TextView时,向侦听器发送一条消息(修改监听器的静态var的值)
    • 侦听器接收消息并将其发送到Activity-2(通过Handle),然后最终更改TextView
    • 我插入了一个不再需要时退出while循环的控件

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