从另一个线程更改视图[关闭]

Posted

技术标签:

【中文标题】从另一个线程更改视图[关闭]【英文标题】:Change view from another thread [closed] 【发布时间】:2021-04-06 10:52:10 【问题描述】:

我正在尝试从另一个类中的另一个线程更改 TextView,但我不确定如何最好地解决这个问题。

我正在制作一个即时消息应用程序,当通过输入流接收消息时,我想更改在另一个类中设置的视图。

是否应该实现一个侦听器来像这样处理它?

    客户端 1 通过 A 类中的message = inputstream.readObject() 读取消息

    B 类中的 Observer/Listener 函数通过 A 类调用,并使用 message 值设置 TextView。

谢谢!

【问题讨论】:

【参考方案1】:

最佳解决方案 - 使用自定义 Listener 接口 - How to create our own Listener interface in android?

别忘了,ui 只能从主线程更改。 如果您有权访问活动,则可以使用:

activity.runOnUiThread(() -> 
//change the view
);

如果你不这样做:

new Handler(Looper.getMainLooper()).post(() -> /*change*/ );

【讨论】:

以上是关于从另一个线程更改视图[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

ember.js 从另一个视图更改视图

关闭并显示按钮上的视图单击从另一个视图

从另一个视图 IOS 更改滚动条背景

SwiftUI 从另一个视图更改观察到的对象

无法从另一个视图控制器更改 UILabel 的文本

按下后退按钮后,从另一个视图控制器更改按钮