每次变量更改时,如何从 Activity B 更新 Activity A 中的变量?

How to update a variable in Activity A from Activity B, every time the variable changes?

Image description of the problem

我有一个音乐播放器应用程序。 Activity A是我的主菜单。您从 Activity A 中的列表中选择一首歌曲,然后将您带到 Activity B 中(传递 songTitle、songArtist 等数据)。

当我在 Activity B 中按下后退按钮时,它会带我回到 Activity A(传递 songTitle、songArtist 等数据)。我在底部的 Activity A 中显示当前正在播放的歌曲名称和艺术家姓名。

我的问题是,如果我在 Activity A 中,然后歌曲自动更改为 ActivityB 中的下一首歌曲,歌曲名称和艺术家姓名在 Activity A 因为我没有将 Activity B 的任何意图传递给 A.

我尝试在 onStart() 中使用 SharedPreferences,但文本中的更改不适用,除非我按下设备上的主页按钮并再次返回 Activity A。

如何监听另一个 activity 中的变量变化并相应地更新我的 TextView?

You should look into LiveData

LiveData 基于可观察数据 class。您可以从这里找到更多相关信息: LiveData Android

这里有两个选择。您可以将这些活动转换为片段,然后您将能够与 activity 范围视图模型共享数据我相信这是一个不错的选择,您应该这样做,但是如果出于某种原因您拥有庞大的代码库并且它将很难制作这些活动片段,您可以在 ActivityA 和 return 当前音乐 ID 或 ActivityB 中添加 onActivityResult。

我已经用 SharedPreferences 解决了我的问题。