Joa*_*rom 6 android android-fragments android-activity android-fragmentactivity
我正在阅读《Android 编程》,书中说:
完全有可能在 onCreate 活动仍与先前创建的片段相关联时调用它。只要在调用 onCreate 方法时简单地添加一个新片段就会泄漏片段。为了防止这种情况,示例代码使用了片段管理器标记和位置功能。
代码是:
super.onCreate( state);
setContentView( R.layout.main);
FragmentManager fragMgr = getFragmentManager();
FragmentTransaction xact = fragMgr.beginTransaction();
if (null = = fragMgr.findFragmentByTag( FRAG1_TAG)) {
xact.add( R.id.date_time, new DateTime(), FRAG1_TAG);
}
xact.commit();
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么在 onCreate 中需要这样做吗?
我认为片段生命周期总是依赖于活动的生命周期,并且活动中的 onCreate 总是在活动被创建时被调用(即它总是死的)。
因此,如果片段生命周期与活动相关联,那么当活动死亡时所有片段不应该死亡,因此在活动中调用 onCreate 时片段将始终为空吗?
是否有例外或有人可以解释为什么我的想法不正确(我实际上认为它不正确但不知道为什么?)
碎片会被摧毁,Activity但FragmentManager会记住它们,除非你完全完成了Activity。如果Activity由于配置更改而被终止,然后重新创建它,则FragmentManager需要恢复任何先前提交的片段。这就是为什么您要检查 是否Fragment已经存在于FragmentManager. 如果存在,则中止事务,否则最终会产生两个碎片(您刚刚创建的新碎片和记住FragmentManager并会恢复的旧碎片)。
| 归档时间: |
|
| 查看次数: |
1563 次 |
| 最近记录: |