android Java 多个类更新activity UI(如何共享数据)

Posted

技术标签:

【中文标题】android Java 多个类更新activity UI(如何共享数据)【英文标题】:android Java Multiple classes update activity UI (how to share data) 【发布时间】:2020-10-20 18:52:28 【问题描述】:

我知道这个问题已经被问过好几次了,但我似乎找不到合适的答案或者有多种解决方案。我只是想找到最好的解决方案。

我有一个应用程序,它有多个活动,例如主、设置、用户配置文件等,并且我有不同的信息来源进入应用程序,例如从服务器提取数据、BLE 通信、后台计时器等。该计划将将这些调用通信功能放在单独的类中,即 servercomms、BLEStack、计时器等

问题是将这些类中的数据共享到活动 UI 的最佳方式是什么?似乎有不同的方法,例如 Intent、Async、Runable,但不确定应该使用哪一种?当我查看其中一个时,它似乎会产生性能问题,并且如果设备内存不足,它将停止运行。

例如,如果有一个 Timer 在后台运行,它将更新 Main Activity 上的图片、文本,我如何调用函数或从 timer 类更新 UI?我认为在 MainActvity 代码中运行一个函数,但不确定这是否正确,因为我阅读它可能会影响移动应用程序的性能?

抱歉,我知道这个问题已经得到解答,并且我已经关注了每个线程,但无法找到最好的方法来共享数据和更新活动 UI。

【问题讨论】:

使用像ViewModel这样的架构组件来持久化和观察从(活动或片段)到来自远程源或本地的数据的实时变化。 【参考方案1】:

我建议根据他们的描述查看EventBus:

适用于 android 和 Java 的事件总线,可简化活动、片段、线程、服务等之间的通信。更少的代码,更好的质量。

看看官方的android文档Communicating with fragments,它展示了如何使用ViewModels在activity和fragment之间以及fragment到fragment之间共享数据。

【讨论】:

以上是关于android Java 多个类更新activity UI(如何共享数据)的主要内容,如果未能解决你的问题,请参考以下文章

Android四大组件完全解析---Activity

Android on Back Pressed 多个子活动不起作用

Xamarin 中的 PhoneInfo java 类

基于页面的编程模型

Android基础01

Android 9适配经验总结