diff options
author | Dianne Hackborn <hackbod@google.com> | 2010-12-16 22:41:30 -0800 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2010-12-16 22:41:30 -0800 |
commit | 540d3d26623f44caaa82a5c973cda818cb11f946 (patch) | |
tree | ff1e184ca5c7c10c61313e8b1bb9a8c84955ed71 /core/java/android/app | |
parent | c91893511dc1b9e634648406c9ae61b15476e65d (diff) | |
download | frameworks_base-540d3d26623f44caaa82a5c973cda818cb11f946.zip frameworks_base-540d3d26623f44caaa82a5c973cda818cb11f946.tar.gz frameworks_base-540d3d26623f44caaa82a5c973cda818cb11f946.tar.bz2 |
Fixes for when onLoaderReset() is called.
Change-Id: Iab479926f11fa579757904032ada46c41686d560
Diffstat (limited to 'core/java/android/app')
-rw-r--r-- | core/java/android/app/LoaderManager.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/core/java/android/app/LoaderManager.java b/core/java/android/app/LoaderManager.java index e5db00d..cccf6e8 100644 --- a/core/java/android/app/LoaderManager.java +++ b/core/java/android/app/LoaderManager.java @@ -203,6 +203,7 @@ class LoaderManagerImpl extends LoaderManager { Loader<Object> mLoader; Object mData; boolean mStarted; + boolean mNeedReset; boolean mRetaining; boolean mRetainingStarted; boolean mDestroyed; @@ -291,7 +292,7 @@ class LoaderManagerImpl extends LoaderManager { void destroy() { if (DEBUG) Log.v(TAG, " Destroying: " + this); mDestroyed = true; - if (mCallbacks != null && mLoader != null && mData != null) { + if (mCallbacks != null && mLoader != null && mData != null && mNeedReset) { String lastBecause = null; if (mActivity != null) { lastBecause = mActivity.mFragments.mNoTransactionsBecause; @@ -305,6 +306,7 @@ class LoaderManagerImpl extends LoaderManager { } } } + mNeedReset = false; mCallbacks = null; mData = null; if (mLoader != null) { @@ -338,6 +340,7 @@ class LoaderManagerImpl extends LoaderManager { // clean it up. LoaderInfo info = mInactiveLoaders.get(mId); if (info != null && info != this) { + info.mNeedReset = false; info.destroy(); mInactiveLoaders.remove(mId); } @@ -357,6 +360,7 @@ class LoaderManagerImpl extends LoaderManager { mActivity.mFragments.mNoTransactionsBecause = lastBecause; } } + mNeedReset = true; } } @@ -456,6 +460,7 @@ class LoaderManagerImpl extends LoaderManager { // yet destroyed the last inactive loader. So just do // that now. if (DEBUG) Log.v(TAG, " Removing last inactive loader in " + this); + inactive.mNeedReset = false; inactive.destroy(); mInactiveLoaders.put(id, info); } else { |