提问者:小点点

Android/java应用程序:将数据从一个活动传递到另一个正在运行的活动


在我的主要活动(A)中,我有一个数据收集过程,它定期用结果填充一些数组。在某个时候,用户可能想要检查这些结果,并通过单击A中的一个按钮,一个新的活动(B)开始并显示它们。我已经做到了这一点,即startActivity(意图);

但是,我想要更多:如果B正在运行并且数据(驻留在A中)发生变化,我想更新B的屏幕来显示这一点。我已经知道如何覆盖B中的onNewIntent(Intent i),我明白这一点。但是我不知道如何将带有更新数据的意图从A发送到B。我重复一遍:不是在创建B的时候,而是在B已经运行的时候。

我似乎找不到如何在从A中创建时保留对B的引用。我似乎找不到如何向B发送任何东西。

我的设计有缺陷吗?


共1个答案

匿名用户

我遵循了@sarahkhan和@satya-p91的建议(谢谢!),使用包含LiveData的ViewModel。

但我很快就意识到,作为一个机器人,ViewModel与它在创建时附加到的活动的生命周期相关联,并且在次要(非主)活动死亡时会死亡,即使那是一个后退按钮。

为了使数据在ViewModel中保持持久性,即使该ViewModel在其活动消失时也会消失,就是使其静态。所以我有这样的东西:

public class AllViewModel extends ViewModel {
  static MutableLiveData<List<String>> myData = new ArrayList<>();
...
}