Android 在onCreate中创建片段?
我正在读Android编程,书中写道: 当activitys onCreate仍与先前创建的片段关联时,完全有可能调用该activitys onCreate。只要在调用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();
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仍然记得片段的实例。这很有意义。你能将其作为答案发布,以便我可以将其标记为已接受吗?