我在我的应用程序中维护活动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
开始的活动的任何引用?
答案 0 :(得分:0)
当您的应用进入后台时,您的所有活动都会保存其状态。 Android会记住,当应用进入前台时,它应该使用相同的Intent
启动活动D.
如果您使用Intent.FLAG_ACTIVITY_CLEAR_TOP
android使用相同的活动实例,那么,您的弱引用仍然有效,因为活动D将是同一个对象。
如果没有此标志,android将创建一个新的活动实例,并且您的弱引用将返回null,因为旧活动D对象是垃圾收集的。