java - Android:如何在多个仍在运行的 Activity 之间直接交换数据?

标签 java android android-layout android-intent

我需要一种在两个 Activity 之间直接交换数据的好方法。我的所有运行 Activity 都有一个相同的自定义标题,在我的第一个 Activity 中,我在该标题中显示带有图像的 GPS 状态(已找到/仍在搜索)。 LocationListener 位于我的第一个 Activity 中,如果 GPS 状态发生变化,我想更新我正在运行/显示的 Activity 的所有标题。目前我只能更改第一个 Activity 的标题。

我知道我可以通过 SharedPreferences 和 Intents 交换数据,后者将数据作为 Extras 传递,但据我所知,我只能在其他 Activity 的 onCreate 方法中接收 extras。

我想要的是,数据在仍在运行的 Activity 上更新(传递 onCreate)。

我希望你明白我的意思:)

示例场景:

我启动我的应用程序。 GPS 定位正在运行(第一个 Activity )。与此同时,我导航到我的应用程序的另一个 Activity 。现在,如果 GPS 状态发生变化,我需要更新当前显示的第二个 Activity 的标题。

有什么办法可以解决这个问题吗?

谢谢

最佳答案

除了创建具有两个 fragment 的 Activity 之外,还有一种适用于其他场景的巧妙方法:

假设你有一个变量(让标题栏中的文本是一个变量)需要不断更新,而无法使用广播(不允许消息丢失或 Activity 被杀死),你可以使用从共享首选项中保存文本,并每次都提取它。

例如, Activity A 使用来自 sharepreference 的字符串,键是“title”,默认值是您的应用程序名称。 B、C或D更新标题文本后,A也需要更新。因此,您只需更新共享首选项中键“title”的值即可。 A被撤销后,它会再次抓取sharedPreference中的标题,并相应更新标题。

希望这有帮助。 :-)

关于java - Android:如何在多个仍在运行的 Activity 之间直接交换数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23396699/

相关文章:

java - 循环遍历tableview的列并获取单元格数据

java - href 定位器在 Selenium 中不适用于仅一个元素

android - 删除 ListView 中的数据库项(从 ArrayAdapter 创建)

android - 在父 ConstraintLayout 中水平居中固定大小的 ImageView

android - 获取默认对话框的 View

相当于 textCapSentences 的 android TextView

java - 使用 Collection.max() 在 HashSet 中查找最大值

java - 为 ConcurrentHashMap 选择并发级别的最佳方法是什么?

android - RadioGroup onCheckedChanged 函数不会触发

Android - 当设备屏幕为空白时不接收 Wi-Fi 连接更改 Intent