获取Lifecycle。而support现在的库中的Fragment和AppCompatActivity均实现了此接口。Fragment现在的support库中的Fragment实现了LifecycleOwner,我们来观摩一下。LifecycleRegistry(this);变量是LifecycleRegistry的对象。Fragment实现了LifecycleOwner,并返回了LifecycleRegistry类的对象。?在performCreate方法中,调用支持onCreate方法并使用mLifecycleRegistry来处理Lifecycle.Event.ON_CREATE。使用mLifecycleRegistry处理Lifecycle.Event中的相应事件。(至于什么时候执行performXX方法可以自行分析)。mLifecycleRegistry;}SupportActivity也是返回LifecycleRegistry返回。ReportFragment.injectIfNeededIn(this);}其实委托给ReportFragment处理生命周期。dispatch(Lifecycle.Event.ON_CREATE);}在onActivityCreated方法中调用dispatch方法分发Lifecycle.Event.ON_CREATE事件。}}SupportActivity实现了LifecycleOwner方法,最终会调用到SupportActivity的mLifecycleRegistry处理事件。类似:onStart方法中发送Lifecycle.Event.ON_CREATE事件。onResume方法中发送Lifecycle.Event.ON_RESUME事件。onPause方法中发送Lifecycle.Event.ON_PAUSE事件。onStop方法中发送Lifecycle.Event.ON_STOP事件。onDestroy方法中发送Lifecycle.Event.ON_DESTROY事件。Lifecycle.State.CREATED。addObserver添加观察者,removeObserver移除观察者,getCurrentState获取当前的状态。LifecycleOwner。}}我们只是简单的在Fragment的onCreate方法中添加了LifecycleObserver。onCreate方法。所以mState的状态为INITIALIZED,初始化的状态也为INITIALIZED。因此返回的值为null。通过mLifecycleOwner(弱引用)获取LifecycleOwner。isReentrance肯定是false。INITIALIZED。而mState也为INITIALIZED。没有操作mParentStates,其数据parentState为null。最终calculateTargetState计算的目标状态为INITIALIZED。由于statefulObserver.mState的状态与targetState所以addObserver不会执行while语句。由于isReentrance为false。而且仅一个观察者,mObserverMap.eldest()与mObserverMap.newest(),并且状态与mState相同,因此此方法返回true。我们的addObserver已经分析完成。handleLifecycleEvent(Lifecycle.Event.ON_CREATE)的流程。moveToState(next);}首先调用getStateAfter方法获取状态,其次是调用moveToState方法。接下来是moveToState方法。false;}接着调用isSynced,由于mState为INITIALIZED,但是呢mObserverMap中的ObserverWithState对象为INITIALIZED,因此返回false。接着执行while语句。由于INITIALIZED小于CREATED,因此会调用forwardPass方法。