弹出后堆栈时,碎片会被破坏吗?

use*_*963 1 java android android-fragments

找不到直接的答案,所以我在这里问。

如果我有一个活动以附加的片段A开始,然后按A上的按钮,则它将片段A替换为片段B。将A添加到后堆栈。如果按下后退按钮,它将从B转到A,但我想知道片段B是否被破坏?因为从技术上讲,活动不是这样,即使弹出了后堆栈,我也需要显式删除片段B吗?

感谢您的阅读

Kei*_*win 6

根据Android API,它不会被破坏,会被停止。 http://developer.android.com/guide/components/fragments.html#Lifecycle

处理片段生命周期

已停止
片段不可见。主机活动已停止,或者片段已从活动中删除但已添加到后台堆栈中。停止的片段仍然有效(系统保留了所有状态和成员信息)。但是,它不再对用户可见,如果活动被杀死,它将被杀死。

  • 这是不正确的。他询问当用户按下后退按钮时片段 B 会发生什么。假设你的堆栈是 [A , B],其中 B 位于顶部。在此状态下,片段 A 处于停止状态,片段 B 处于当前运行的前台。现在,如果用户按下后退按钮,则片段 B 将从堆栈中弹出并被完全删除,并且片段 A 将进入前台。您可以通过在片段 B `onDestroy()` 方法中放置日志或 toast 来确认这一点,并且您将在按下片段 B 时调用 onDestroy(),这意味着它被销毁。 (2认同)