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,它展示了如何使用ViewModel
s在activity和fragment之间以及fragment到fragment之间共享数据。
【讨论】:
以上是关于android Java 多个类更新activity UI(如何共享数据)的主要内容,如果未能解决你的问题,请参考以下文章