【问题标题】:Is there any scenario where a fragment is destroyed without the activity and without transaction?是否存在在没有活动且没有事务的情况下销毁片段的情况?
【发布时间】:2017-10-11 15:55:35
【问题描述】:

是否存在在没有宿主活动且没有事务的情况下销毁片段的情况?

您的意思是从来没有与隐藏该片段相关的交易吗?

是的

【问题讨论】:

  • “没有事务”是指从未与隐藏该片段相关的事务,或者更确切地说,您的意思是没有明确的事务要求销毁该片段片段?
  • 另外,“没有活动”是什么意思?
  • @CommonsWare 没有破坏主机活动
  • @BenP。更新了问题
  • 我想不出一个片段可以在没有相关活动被销毁或某些事务生效的情况下被销毁的场景。

标签: android android-fragments android-activity android-fragmentactivity android-lifecycle


【解决方案1】:

如果您的Fragment 位于“前台”(即当前已添加到活动中),则只能在两种情况下将其销毁。首先,Activity 可能被破坏(配置更改或系统回收资源)。其次,您可以执行一些FragmentTransaction 来销毁它(例如replace() 调用)。

如果您的Fragment 在“后台”中(例如,您之前使用addToBackStack() 执行了一个事务),它可以被销毁,而Activity 也不会被销毁(如果系统想要回收资源)。但我认为这不符合您对“没有交易”的定义。我只想提请注意,Fragment 可能会在事务执行后的一段时间内被销毁(而不是在执行后立即销毁)。

tl;dr:不,Fragment 不能被销毁,除非它的主机 Activity 被销毁,或者您在过去的某个时间执行了删除它的事务。

【讨论】:

    猜你喜欢
    • 2016-08-20
    • 2015-05-12
    • 2014-08-19
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2016-05-19
    相关资源
    最近更新 更多