Merge "Retain fragment loaders" into mnc-dr-dev

This commit is contained in:
Todd Kennedy
2015-10-20 14:36:00 +00:00
committed by Android (Google) Code Review
4 changed files with 12 additions and 16 deletions

View File

@@ -460,9 +460,6 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene
// If set this fragment is being retained across the current config change. // If set this fragment is being retained across the current config change.
boolean mRetaining; boolean mRetaining;
// If set this fragment's loaders are being retained across the current config change.
boolean mRetainLoader;
// If set this fragment has menu items to contribute. // If set this fragment has menu items to contribute.
boolean mHasMenu; boolean mHasMenu;
@@ -2404,7 +2401,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene
mLoaderManager = mHost.getLoaderManager(mWho, mLoadersStarted, false); mLoaderManager = mHost.getLoaderManager(mWho, mLoadersStarted, false);
} }
if (mLoaderManager != null) { if (mLoaderManager != null) {
if (mRetainLoader) { if (mHost.getRetainLoaders()) {
mLoaderManager.doRetain(); mLoaderManager.doRetain();
} else { } else {
mLoaderManager.doStop(); mLoaderManager.doStop();

View File

@@ -341,7 +341,6 @@ public class FragmentController {
*/ */
public void doLoaderStop(boolean retain) { public void doLoaderStop(boolean retain) {
mHost.doLoaderStop(retain); mHost.doLoaderStop(retain);
mHost.mFragmentManager.setRetainLoader(retain);
} }
/** /**

View File

@@ -42,9 +42,14 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer {
private final Handler mHandler; private final Handler mHandler;
final int mWindowAnimations; final int mWindowAnimations;
final FragmentManagerImpl mFragmentManager = new FragmentManagerImpl(); final FragmentManagerImpl mFragmentManager = new FragmentManagerImpl();
/** The loader managers for individual fragments [i.e. Fragment#getLoaderManager()] */
private ArrayMap<String, LoaderManager> mAllLoaderManagers; private ArrayMap<String, LoaderManager> mAllLoaderManagers;
/** Whether or not fragment loaders should retain their state */
private boolean mRetainLoaders;
/** The loader manger for the fragment host [i.e. Activity#getLoaderManager()] */
private LoaderManagerImpl mLoaderManager; private LoaderManagerImpl mLoaderManager;
private boolean mCheckedForLoaderManager; private boolean mCheckedForLoaderManager;
/** Whether or not the fragment host loader manager was started */
private boolean mLoadersStarted; private boolean mLoadersStarted;
public FragmentHostCallback(Context context, Handler handler, int windowAnimations) { public FragmentHostCallback(Context context, Handler handler, int windowAnimations) {
@@ -166,6 +171,10 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer {
return true; return true;
} }
boolean getRetainLoaders() {
return mRetainLoaders;
}
Activity getActivity() { Activity getActivity() {
return mActivity; return mActivity;
} }
@@ -217,6 +226,8 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer {
} }
void doLoaderStop(boolean retain) { void doLoaderStop(boolean retain) {
mRetainLoaders = retain;
if (mLoaderManager == null) { if (mLoaderManager == null) {
return; return;
} }

View File

@@ -869,17 +869,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
} }
} }
void setRetainLoader(boolean retain) {
if (mActive != null) {
for (int i=0; i<mActive.size(); i++) {
Fragment f = mActive.get(i);
if (f != null) {
f.mRetainLoader = retain;
}
}
}
}
void moveToState(Fragment f, int newState, int transit, int transitionStyle, void moveToState(Fragment f, int newState, int transit, int transitionStyle,
boolean keepActive) { boolean keepActive) {
if (DEBUG && false) Log.v(TAG, "moveToState: " + f if (DEBUG && false) Log.v(TAG, "moveToState: " + f