0

为什么我的 Fragment 在应用程序启动时会抖动?!?

02-10 11:41:34.699: D/SessionDetailFragment(19272): onResume() 99
02-10 11:41:34.699: D/MPQAudioFragment(19272): onResume() 00
02-10 11:41:34.699: D/MPQAudioFragment(19272): onResume() 99
02-10 11:41:34.699: D/SessionDetailFragment(19272): onPause() 00
02-10 11:41:34.699: D/MPQAudioFragment(19272): onStop() 00 bound_flag: false
02-10 11:41:34.699: D/MPQAudioFragment(19272): onStop() 05 mAudioService: null
02-10 11:41:34.699: D/SessionDetailFragment(19272): onStop() 00 bound_flag: false
02-10 11:41:34.699: D/SessionDetailFragment(19272): onStop() 05 mAudioService: null
02-10 11:41:34.709: D/SessionDetailFragment(19272): onDetach() 00
02-10 11:41:34.709: D/SessionDetailFragment(19272): onAttach() 00
02-10 11:41:34.709: D/SessionDetailFragment(19272): onAttach() 10 activity:MPQMainTabActivity

请注意,一旦SessionDetailFragment完成onResume()(就像它的子 Fragment 一样MPQAudioFragment),它们会立即运行onPause()?!?!那么片段一拆掉就又开始onAttach()套路了?

幸运的是,这种摆动似乎只发生一次,但它使维持状态更具挑战性(我想了解正在发生的事情和原因)。


更新:

现在,我正在通过static对关键数据使用成员属性来解决抖动问题。

此 SO 帖子指出了onSaveInstanceState()未调用的情况以及潜在的解决方法:https ://stackoverflow.com/a/2909211/1742657

4

1 回答 1

0

更新/关闭 2013-03-24:

重复的 Fragments 似乎是由 parent/wrapperTabHost和对updateTab方法的多次调用引起的。第一个调用来自用户按下按钮和菜单,第二个调用来自onTabChanged()监听器触发。

两个调用都会检查现有的片段,但由于实例化尚未完成,最终都创建了一个新的片段。

于 2013-03-24T19:12:48.200 回答