为什么我的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()
(其子片段MPQAudioFragment
也是如此),它们会立即运行onPause()
?!?!然后,一旦碎片被拆除,它就会再次开始onAttach()
程序?
幸运的是,这种拍打似乎只发生一次,但它使维持状态更具挑战性(我想了解发生了什么以及为什么)。
目前,我正在通过对关键数据使用static
成员属性解决扑动问题。
此SO帖子指的是onSaveInstanceState()
未被调用的情况,以及可能的解决方法:https://stackoverflow.com/a/2909211/1742657
答案 0 :(得分:0)
重复片段似乎是由父/包装器TabHost
引起的,并且多次调用updateTab
方法。第一个调用是用户按下按钮和菜单,第二个调用来自监听器触发的onTabChanged()
。
两次调用都会检查现有的片段,但由于实例化尚未完成,因此最终都会创建一个新的片段。