java - android Java 多个类更新activity UI(如何共享数据)
问题描述
我知道这个问题已经被问过好几次了,但我似乎找不到合适的答案或者有多种解决方案。我只是想找到最好的解决方案。
我有一个应用程序,它有几个活动,如主、设置、用户配置文件等,我有不同的信息来源进入应用程序,例如从服务器提取数据、BLE 通信、后台计时器等。计划是这些调用通信功能在单独的类中,即 servercomms、BLEStack、计时器等
问题是将这些类中的数据共享到活动 UI 的最佳方式是什么?似乎有不同的方法,例如 Intent、Async、Runable,但不确定应该使用哪一种?当我查看其中一个时,它似乎会产生性能问题,并且如果设备内存不足,它将停止运行。
例如,如果有一个 Timer 在后台运行,它将更新 Main Activity 上的图片、文本,我如何调用函数或从 timer 类更新 UI?我想在 MainActvity 代码中运行一个函数,但不确定这是否正确,因为我读到它可能会影响移动应用程序的性能?
抱歉,我知道这个问题已经得到解答,并且我已经关注了每个线程,但无法找到最好的方法来共享数据和更新活动 UI。
解决方案
我建议根据他们的描述查看EventBus :
用于 Android 和 Java 的事件总线,简化了活动、片段、线程、服务等之间的通信。更少的代码,更好的质量。
或者
看看官方的 android 文档Communicating with Fragments,它展示了如何使用ViewModel
s 在活动和片段之间以及片段到片段之间共享数据。
推荐阅读
- google-bigquery - StandardSQL BigQuery 值从 Array 中的键:值对到单独的列中。如何?
- c++ - c++17 (c++20) 无序映射和自定义分配器
- laravel - Laravel 8:存储::删除(文件)返回 false
- antlr4 - ANLTR4 输入不匹配
- css - 创建 CSS 弯曲箭头
- python - 使用 sys.stdin 比较 python 中的 2 个 lins?
- javascript - 使用 req.params 缺少参数时如何捕获错误?- 节点.js
- php - 如何获取 PHP 语法错误以显示带有文件名和行号的完整消息?
- sql - 如何在 ssrs 表中并排添加动态列
- python - Python:如何将 datacompy.compare.report 输出到文本或 csv 文件?我只能在终端看到它,需要一个文件