internal static IViewModelStore FindOrCreate(FragmentActivity owner) { var fm = owner.SupportFragmentManager; var holder = (ViewModelStoreFragment)fm.FindFragmentByTag(ViewModelStoreFragment.HOLDER_TAG); if (holder != null) { return(holder._store); } if (_pendingActivityHolders.TryGetValue(owner, out holder)) { return(holder._store); } if (_activityCleanup == null) { _activityCleanup = new CleanPendingActivityHolders(); owner.Application.RegisterActivityLifecycleCallbacks(_activityCleanup); } holder = Create(fm); _pendingActivityHolders.Add(owner, holder); return(holder._store); }
public HolderFragmentManager() { _mActivityCallbacks = new EmptyActivityLifecycleCallbacks { OnActivityDestroyedAction = activity => { if (_mNotCommittedActivityHolders.ContainsKey(activity)) { _mNotCommittedActivityHolders.Remove(activity); } } }; _mParentDestroyedCallback = new EmptyFragmentLifecycleCallbacks { OnFragmentDestroyedAction = (fm, f) => { if (_mNotCommittedFragmentHolders.ContainsKey(f)) { _mNotCommittedFragmentHolders.Remove(f); } } }; }