上次说到了Fragment,还没有补源码解析,今天有空,在AS中写了一个Fragment,Ctrl点进去看看源码,总结总结。
这里我先从最初的Fragment开始看。
ComponentCallbacks是android.content.res.Configuration目录下的一个接口,里面定义了两个方法,Android四大组件都实现了这个接口.它有两个方法分别是用来实时更新设备资源配置的,另外一个是释放资源方便GC的。
OnCreateContextMenuListener接口是用来处理上下文菜单显示事件的监听接口。他只有一个方法,当某个View中显示上下文菜单时被调用,开发人员可以通过实现该方法来处理上下文菜单显示时的一些操作。
LifecycleOwner是Lifecycle 对象的持有者,它有一个方法就是获取Lifecycle对象。在Fragment中就是创建了一个LifecycleRegistry的对象,它是LifecycleRegistry的实现子类。
ViewModelStoreOwner是ViewModelStore对象的持有者,它有一个方法就是获取ViewModelStore对象。它的职责是在配置更改期间保留拥有的ViewModelStore。
private static final SimpleArrayMap<String, Class<?>> sClassMap = new SimpleArrayMap();
static final Object USE_DEFAULT_TRANSITION = new Object();
static final int INITIALIZING = 0;
static final int CREATED = 1;
static final int ACTIVITY_CREATED = 2;
static final int STARTED = 3;
static final int RESUMED = 4;
int mState = 0;
Bundle mSavedFragmentState;
SparseArray<Parcelable> mSavedViewState;
@Nullable
Boolean mSavedUserVisibleHint;
int mIndex = -1;
String mWho;
Bundle mArguments;
Fragment mTarget;
int mTargetIndex = -1;
int mTargetRequestCode;
boolean mAdded;
boolean mRemoving;
boolean mFromLayout;
boolean mInLayout;
boolean mRestored;
boolean mPerformedCreateView;
int mBackStackNesting;
FragmentManagerImpl mFragmentManager;
FragmentHostCallback mHost;
FragmentManagerImpl mChildFragmentManager;
FragmentManagerNonConfig mChildNonConfig;
ViewModelStore mViewModelStore;
Fragment mParentFragment;
int mFragmentId;
int mContainerId;
String mTag;
boolean mHidden;
boolean mDetached;
boolean mRetainInstance;
boolean mRetaining;
boolean mHasMenu;
boolean mMenuVisible = true;
boolean mCalled;
ViewGroup mContainer;
View mView;
View mInnerView;
boolean mDeferStart;
boolean mUserVisibleHint = true;
Fragment.AnimationInfo mAni