diff options
author | Todd Kennedy <toddke@google.com> | 2015-10-20 14:36:01 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-10-20 14:36:01 +0000 |
commit | f79417e198124e78457517ec69bf7a9f48c953ce (patch) | |
tree | 21dfd249b7c960e539ba7d5775896f29d3efba86 | |
parent | f598a95930024a752dc78f83d5276103a70c7ba0 (diff) | |
parent | 64ece2df3d6d789f7a642692acbe85fa1b998d6b (diff) | |
download | support-marshmallow-mr3-release.tar.gz |
Merge "Retain fragment loaders" into mnc-dr-devandroid-6.0.1_r9android-6.0.1_r81android-6.0.1_r80android-6.0.1_r8android-6.0.1_r79android-6.0.1_r78android-6.0.1_r77android-6.0.1_r74android-6.0.1_r73android-6.0.1_r72android-6.0.1_r70android-6.0.1_r7android-6.0.1_r69android-6.0.1_r66android-6.0.1_r65android-6.0.1_r61android-6.0.1_r60android-6.0.1_r59android-6.0.1_r58android-6.0.1_r57android-6.0.1_r56android-6.0.1_r52android-6.0.1_r51android-6.0.1_r50android-6.0.1_r49android-6.0.1_r48android-6.0.1_r47android-6.0.1_r46android-6.0.1_r43android-6.0.1_r42android-6.0.1_r41android-6.0.1_r40android-6.0.1_r30android-6.0.1_r3android-6.0.1_r28android-6.0.1_r27android-6.0.1_r26android-6.0.1_r20android-6.0.1_r17android-6.0.1_r13android-6.0.1_r12android-6.0.1_r11android-6.0.1_r10android-6.0.1_r1android-6.0.0_r41marshmallow-mr3-releasemarshmallow-mr2-releasemarshmallow-mr1-releasemarshmallow-mr1-devlinaro-m-jdk8
4 files changed, 12 insertions, 16 deletions
diff --git a/v4/java/android/support/v4/app/Fragment.java b/v4/java/android/support/v4/app/Fragment.java index 79f21ff7461..48fc495bf36 100644 --- a/v4/java/android/support/v4/app/Fragment.java +++ b/v4/java/android/support/v4/app/Fragment.java @@ -272,9 +272,6 @@ public class Fragment implements ComponentCallbacks, OnCreateContextMenuListener // If set this fragment is being retained across the current config change. 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. boolean mHasMenu; @@ -2153,7 +2150,7 @@ public class Fragment implements ComponentCallbacks, OnCreateContextMenuListener mLoaderManager = mHost.getLoaderManager(mWho, mLoadersStarted, false); } if (mLoaderManager != null) { - if (mRetainLoader) { + if (mHost.getRetainLoaders()) { mLoaderManager.doRetain(); } else { mLoaderManager.doStop(); diff --git a/v4/java/android/support/v4/app/FragmentController.java b/v4/java/android/support/v4/app/FragmentController.java index dbf9ee71e03..5d647b061af 100644 --- a/v4/java/android/support/v4/app/FragmentController.java +++ b/v4/java/android/support/v4/app/FragmentController.java @@ -346,7 +346,6 @@ public class FragmentController { */ public void doLoaderStop(boolean retain) { mHost.doLoaderStop(retain); - mHost.mFragmentManager.setRetainLoader(retain); } /** diff --git a/v4/java/android/support/v4/app/FragmentHostCallback.java b/v4/java/android/support/v4/app/FragmentHostCallback.java index fb4410f0d08..5d6145ad714 100644 --- a/v4/java/android/support/v4/app/FragmentHostCallback.java +++ b/v4/java/android/support/v4/app/FragmentHostCallback.java @@ -42,9 +42,14 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { private final Handler mHandler; final int mWindowAnimations; final FragmentManagerImpl mFragmentManager = new FragmentManagerImpl(); + /** The loader managers for individual fragments [i.e. Fragment#getLoaderManager()] */ private SimpleArrayMap<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 boolean mCheckedForLoaderManager; + /** Whether or not the fragment host loader manager was started */ private boolean mLoadersStarted; public FragmentHostCallback(Context context, Handler handler, int windowAnimations) { @@ -197,6 +202,10 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { void onAttachFragment(Fragment fragment) { } + boolean getRetainLoaders() { + return mRetainLoaders; + } + void doLoaderStart() { if (mLoadersStarted) { return; @@ -217,6 +226,8 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { // retain -- whether to stop the loader or retain it void doLoaderStop(boolean retain) { + mRetainLoaders = retain; + if (mLoaderManager == null) { return; } diff --git a/v4/java/android/support/v4/app/FragmentManager.java b/v4/java/android/support/v4/app/FragmentManager.java index 048dc1ae51f..adf8892a2ff 100644 --- a/v4/java/android/support/v4/app/FragmentManager.java +++ b/v4/java/android/support/v4/app/FragmentManager.java @@ -918,17 +918,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, boolean keepActive) { // Fragments that are not currently added will sit in the onCreate() state. |