我有一个场景,在一个Activity中将有5个片段相互添加(不替换)堆叠。当Activity恢复时,我注意到所有片段的OnResume被调用,我认为这是根据生命周期。
如果我根据从任何片段的OnResume中的先前片段传递的数据处理任何数据或进行UI更改,那么这些更改也会发生。是否有任何设计模式或任何方式来处理这种特殊情况?也就是说,当Activity恢复时,不得调用堆栈中碎片的OnResume。
答案 0 :(得分:0)
如果我做得对,您可以定义bool firstRun;
并将其设置为活动true
中的onCreate()
。然后在活动onResume()
:
true
,因此请将其更改为false
,false
。然后在活动中创建getter,它将返回firstRun
值并在片段onResume()
中进行检查:
public onResume() {
MainActivity activity = (MainActivity) getActivity();
if (activity != null && activity.isFirstRun()) {
// should execute only when activity starts for the first time
}
}