Android活动和片段生命周期
这提供了活动和片段生命周期的可视化。 但它并没有真正提到从活动触发片段时的整个生命周期。 有人能解释一下,当用户更改设备方向时,将触发什么样的方法序列(片段和活动)? 这将是顺序:Android活动和片段生命周期,android,android-lifecycle,Android,Android Lifecycle,这提供了活动和片段生命周期的可视化。 但它并没有真正提到从活动触发片段时的整个生命周期。 有人能解释一下,当用户更改设备方向时,将触发什么样的方法序列(片段和活动)? 这将是顺序: 片段。暂停 Fragment.onSaveInstance Fragment.onStop Fragment.ondestory Activity.onPause Activity.onSaveInstance Activity.onStop 活动.故事 再次创建活动。。。跑步 片段再次创建。。。跑步 刚刚创建了一个
刚刚创建了一个示例并为您进行了测试。我在MainActivity onCreate中附加了一个占位符片段 当用户更改方向时,调用堆栈:
07-09 15:47:59.932: I/System.out(9756): Fragment onPause
07-09 15:47:59.952: I/System.out(9756): Activity onPause
07-09 15:47:59.952: I/System.out(9756): Activity onSaveInstanceState
07-09 15:47:59.952: I/System.out(9756): Fragment onStop
07-09 15:47:59.952: I/System.out(9756): Activity onStop
07-09 15:47:59.952: I/System.out(9756): Fragment onDestroyView
07-09 15:47:59.952: I/System.out(9756): Fragment onDestroy
07-09 15:47:59.952: I/System.out(9756): Fragment onDetach
07-09 15:47:59.972: I/System.out(9756): Activity onDestroy
07-09 15:48:00.072: I/System.out(9756): Fragment onAttach
07-09 15:48:00.072: I/System.out(9756): Fragment onCreate
07-09 15:48:00.172: I/System.out(9756): Activity onCreate
07-09 15:48:00.172: I/System.out(9756): Fragment onCreateView
07-09 15:48:00.172: I/System.out(9756): Fragment onActivityCreated
07-09 15:48:00.172: I/System.out(9756): Fragment onStart
07-09 15:48:00.172: I/System.out(9756): Activity onStart
07-09 15:48:00.182: I/System.out(9756): Activity onResume
07-09 15:48:00.182: I/System.out(9756): Fragment onResume
我还附上了下面的代码,以防你想用它进行实验。(编辑:请参见前面的代码编辑)
另外,《Android开发者指南》对和也有很好的解释。我以前做过,但序列对我来说没有意义。例如,首先创建片段,然后仅创建活动。您介意进一步解释一下吗?@user970307,这是我的解释,
Activity onCreate()
在创建活动时被调用,这意味着在创建活动中的组件后,应用程序会向此函数发送一条消息。我是什么意思getSupportFragmentManager()
将FragmentManager
作为MainActivity
(FragmentActivity)的组件提供,并且Placeholder Fragment
由FragmentManager
操作。所以整个PlaceholderFragment
生命周期都存在于MainActivity
的上下文中。如上所述,在MainActivity之前调用(作为组件)onCreated
的片段是合理的。还要注意的是,placeholder fragment
类实例即使在onDestroy
之后也驻留在FragmentManager的片段中onCreate
标记片段的创建,它应该与构造或初始化区分开来。