Android 在onCreate中创建片段?

Android 在onCreate中创建片段?,android,android-fragments,android-activity,android-fragmentactivity,Android,Android Fragments,Android Activity,Android Fragmentactivity,我正在读Android编程,书中写道: 当activitys onCreate仍与先前创建的片段关联时,完全有可能调用该activitys onCreate。只要在调用onCreate方法时添加一个新片段,就会泄漏片段。为了避免这种情况,示例代码使用片段管理器标记和定位功能 代码是: super.onCreate( state); setContentView( R.layout.main); FragmentManager fragMgr = getFragmentManager();

我正在读Android编程,书中写道:

当activitys onCreate仍与先前创建的片段关联时,完全有可能调用该activitys 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();
有人能解释一下为什么onCreate中需要这个吗

我认为片段生命周期始终依赖于活动的生命周期,而活动中的onCreate总是在创建活动时被调用(即它总是死的)

因此,如果一个片段生命周期与该活动相关联,那么当一个活动死亡时,是否所有片段都应该死亡,因此当在一个活动中调用onCreate时,片段将始终为空


是否有例外或有人能解释为什么我的想法不正确(我实际上认为它不正确,但不知道为什么?

片段将随着
活动的进行而销毁,但是
片段管理器将记住它们,除非您完全完成
活动。如果
活动
由于配置更改而被终止,然后重新创建,则
碎片管理器
需要恢复以前提交的任何碎片。这就是为什么要检查
片段
是否不在
片段管理器
中。如果存在,则中止事务,否则将以两个片段结束(您刚刚创建的新片段和
FragmentManager
记住并将恢复的旧片段)。

片段将随着
活动被销毁,但
FragmentManager
将记住它们(除非您正在完全完成活动)。现在,如果重新创建活动(例如,在配置更改之后)
FragmentManager
需要恢复任何以前提交的片段,这就是为什么您要检查片段是否已经在
FragmentManager
中。如果片段在那里,则中止事务,否则将以两个片段结束(你刚刚实例化的新的和
FragmentManager
记住的旧的)。好的,这正是我想要的。因此生命周期与活动有关,我猜,但FragmentManager仍然记得片段的实例。这很有意义。你能将其作为答案发布,以便我可以将其标记为已接受吗?