Android 一个片段实例能否在两个活动之间进行遍历?

Android 一个片段实例能否在两个活动之间进行遍历?,android,android-fragments,android-lifecycle,Android,Android Fragments,Android Lifecycle,我一直在分析Android中活动和片段的生命周期,并提出了一个问题——在创建和显示一个片段实例后,是否有可能自动将其放入一个新的活动中 例如,是否存在一个配置更改场景,该场景会导致活动重新创建,但随后会简单地将片段从旧活动“迁移”到新活动 这个问题的原因是将活动作为侦听器传递给其片段的想法。我想知道是否有一种情况(除了onSaveInstanceState序列化之外)会丢失此侦听器 编辑: 为了让我的想法更清楚,重用片段实例是一种不需要的行为。我想确保默认情况下不会发生这种情况。官方Androi

我一直在分析Android中活动和片段的生命周期,并提出了一个问题——在创建和显示一个片段实例后,是否有可能自动将其放入一个新的活动中

例如,是否存在一个配置更改场景,该场景会导致活动重新创建,但随后会简单地将片段从旧活动“迁移”到新活动

这个问题的原因是将活动作为侦听器传递给其片段的想法。我想知道是否有一种情况(除了onSaveInstanceState序列化之外)会丢失此侦听器

编辑:


为了让我的想法更清楚,重用片段实例是一种不需要的行为。我想确保默认情况下不会发生这种情况。

官方Android API中没有任何允许这种情况的内容。有一种
Fragment#setretinstate
方法,允许
片段
在旋转更改期间比其父
活动
寿命长,但它将重新连接到创建它的活动。片段基本上由活动的一部分
FragmentManager
控制。如果
活动
消失,则其
碎片管理器也会消失

现在,您可以将片段引用保留在活动生命周期之外。例如,在应用程序或片段类本身的某个地方保留一个片段的静态引用,但这会导致很多麻烦。它超越了它们的用例,最好不要去想


我认为唯一真正的解决方案是将片段状态保存在一个包含片段理解的各种参数的包中。您可以将此捆绑包从一个活动传递到另一个活动,片段可以根据捆绑包状态重新构建自己。这听起来也很麻烦,但它是可以做到的。

官方Android API中没有任何东西允许这样做。有一种
Fragment#setretinstate
方法,允许
片段
在旋转更改期间比其父
活动
寿命长,但它将重新连接到创建它的活动。片段基本上由活动的一部分
FragmentManager
控制。如果
活动
消失,则其
碎片管理器也会消失

现在,您可以将片段引用保留在活动生命周期之外。例如,在应用程序或片段类本身的某个地方保留一个片段的静态引用,但这会导致很多麻烦。它超越了它们的用例,最好不要去想


我认为唯一真正的解决方案是将片段状态保存在一个包含片段理解的各种参数的包中。您可以将此捆绑包从一个活动传递到另一个活动,片段可以根据捆绑包状态重新构建自己。这听起来也很麻烦,但可以做到。

为了让我的想法更清楚,重用片段实例是不必要的行为。我想确保默认情况下不会发生这种情况。那么不会。除非您或其他开发人员做了一些奇怪的事情来防止这种情况发生,否则片段将始终保持在活动范围内。我想澄清一下,重用片段实例是一种不必要的行为。我想确保它在默认情况下不会发生。那么不会。除非你或其他开发人员做了一些奇怪的事情来阻止,否则片段将始终保持在活动范围内。