Android 当来自背景时,片段行为将是什么。考虑到碎片在堆栈中

Android 当来自背景时,片段行为将是什么。考虑到碎片在堆栈中,android,android-fragments,Android,Android Fragments,我有一个导航面板活动。在菜单部分有5个片段(将其命名为Fragment1、Fragment2等) 现在,默认情况下,“活动”将显示Fragment1 如果用户从Fragment1导航到Fragmentxtz。我们将在Fragment1的顶部添加该片段 现在,用户通过按home按钮进入后台,并从tasks中打开应用程序 现在我知道Fragmentxtz onStart将被调用。但我看到Fragment1 onStart也被称为 这是预期的行为吗?正如您在Android开发者身上看到的,您的片段将在

我有一个导航面板活动。在菜单部分有5个片段(将其命名为Fragment1、Fragment2等)

现在,默认情况下,“活动”将显示Fragment1

如果用户从Fragment1导航到Fragmentxtz。我们将在Fragment1的顶部添加该片段

现在,用户通过按home按钮进入后台,并从tasks中打开应用程序

现在我知道Fragmentxtz onStart将被调用。但我看到Fragment1 onStart也被称为


这是预期的行为吗?

正如您在Android开发者身上看到的,您的片段将在onViewCreated()处调用


如果您更改了系统语言或类似的内容,则必须更新视图。

为此处可能发生的情况提供了更多的上下文

如Robert所指出的,如果两个片段都被添加(例如,通过这两个片段),则在为用户恢复布局时将调用
onCreateView()
。从系统的角度来看,所有这些片段都与用户相关,并将同时显示


另一方面,如果仅通过后堆栈上最顶端的片段添加片段,则将收到
onCreateView()
调用。这也可以通过对旧片段执行
add
remove
来实现。如果在按下“后退”按钮后通过后堆栈使此事务可逆,则您的上一个片段将收到相应的生命周期回调。

是的,我知道流程。但我的问题是,如果片段在后堆栈中,这意味着还有另一个片段在这个片段的顶部。在这种情况下,如果您转到后台和前台,那么位于后堆栈中的片段也会调用其onStart()。我知道到达前台的片段将调用其生命周期事件,但不会调用位于后台的事件。如果在堆栈“FragmentTransaction.add()”中添加了10个片段,并且用户转到后台和前台。调用所有10个片段onCreateView()?只是想知道它是这样工作的吗?@YogeshByndoor是的,因为你可以在一个活动中并排显示多个片段,而一些片段可能根本没有UI,只需在显示其他片段时进行一些后台工作。因此,您必须明确地告诉框架删除未使用的片段。谢谢,我确信。很高兴我能帮助您。考虑帮助你解决问题的投票和标记解决方案。这将帮助其他人找到相关答案,并提高帮助您的成员的声誉。