2017-10-13 54 views
1

我有一个活动让它称为活动A,它在创建时从数据库下载一些数据。数据存储在一个名为myData的自定义ArrayList中。启动另一个活动在之前的活动中,arraylist会发生什么

当用户点击按钮时,启动另一个名为B的活动。活动A将一些数据传递给活动B,我可以通过让我的类实现Parcelable来实现这一点。

我的理解是当活动B展开时,活动A将处于onPause或onStop状态。我的问题是,当Activity B关闭并且焦点返回到Activity A时,我的arraylist myData是否仍然存在?如果没有,我怎么能存储这些数据?

+1

如果活动停留在onPause() - “用户返回到活动”的情况,那么这没有问题。但是,如果它在onStop()中 - “用户导航到Activity”就是这种情况,那么下一个调用的方法将是onRestart()。 ArrayList将被重新创建(并且之前的值将丢失)。 –

+0

@ModularSynth如果活动A进入onStop状态。有没有保留我的arrayList数据?即我不想重新创建arrayList onRestart? – mHelpMe

+0

如果你不杀死并重新启动你的Activity(你不通过onCreate()方法),那么很可能是。但是将ArrayList序列化到文件会更安全。以防万一。你知道,这些有趣的用户...他们喜欢旋转他们的设备。 –

回答

1

是的,您可以使用finish()方法完成您ActivityB。当你回到ActivityA时,arrayList的数据将会存在。我会建议将arrayList声明为ActivityA的实例变量,并在onCreate()方法中获取数据。所以数据会一直存在直到活动被破坏,所以当活动聚焦时数据将不会被再次获取。

2

只要您启动新的活动,以前的活动就进入onStop状态。

onStop定义:

当活动不再对用户可见调用,因为 另一个活动已经恢复并且覆盖这一个。这可能是因为一个新的活动正在开始,现有的 被带到这个活动的前面,或者这个活动正在被销毁。

看到这个图表

enter image description here

现在,当你回到ActivityA,数组数据将仍然存在。因此,当活动切换发生时,一旦活动A再次启动,该数据不会被销毁并重新创建。

相关问题