如何使用单个活动处理堆栈中多个片段的OnResume

时间:2018-03-12 14:34:07

标签: android android-fragments design-patterns onresume activity-lifecycle

我有一个场景,在一个Activity中将有5个片段相互添加(不替换)堆叠。当Activity恢复时,我注意到所有片段的OnResume被调用,我认为这是根据生命周期。

如果我根据从任何片段的OnResume中的先前片段传递的数据处理任何数据或进行UI更改,那么这些更改也会发生。是否有任何设计模式或任何方式来处理这种特殊情况?也就是说,当Activity恢复时,不得调用堆栈中碎片的OnResume。

1 个答案:

答案 0 :(得分:0)

如果我做得对,您可以定义bool firstRun;并将其设置为活动true中的onCreate()。然后在活动onResume()

中查看它
  1. 首次运行时会true,因此请将其更改为false
  2. 第二次恢复false
  3. 然后在活动中创建getter,它将返回firstRun值并在片段onResume()中进行检查:

    public onResume() {
       MainActivity activity = (MainActivity) getActivity();
       if (activity != null && activity.isFirstRun()) {
         // should execute only when activity starts for the first time
       }
    }