WeakReference for Android活动,使用FLAG_ACTIVITY_CLEAR_TOP标志创建

时间:2015-07-23 17:18:06

标签: android android-intent android-activity

我在我的应用程序中维护活动s。每当创建任何活动时,该活动的list将被推送到weak reference

让我们说,我按照给定的顺序创建了四个活动:ActivityA => ActivityB => ActivityC => ActivityD。 在这里,ActivityD以list开头。 Intent.FLAG_ACTIVITY_CLEAR_TOP将包含所有这些活动的所有弱引用。

现在,当我按下list按钮时,应用程序将进入后台。一段时间后,当我们再次启动应用程序并打印Home时,ActivityA,ActivityB,ActivityC的所有引用都为list,但仍然存在对ActivityD的引用。我没有存储/持有任何STRONG引用任何活动。

如果我在没有null标记的情况下启动ActivityD,则Intent.FLAG_ACTIVITY_CLEAR_TOP中对ActivityD的引用值为list

所以,我的问题是,

为什么会这样?

android是否存储了对使用null开始的活动的任何引用?

1 个答案:

答案 0 :(得分:0)

当您的应用进入后台时,您的所有活动都会保存其状态。 Android会记住,当应用进入前台时,它应该使用相同的Intent启动活动D.

如果您使用Intent.FLAG_ACTIVITY_CLEAR_TOP android使用相同的活动实例,那么,您的弱引用仍然有效,因为活动D将是同一个对象。

如果没有此标志,android将创建一个新的活动实例,并且您的弱引用将返回null,因为旧活动D对象是垃圾收集的。