summaryrefslogtreecommitdiffstats
path: root/core/java/android/app
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-12-16 22:41:30 -0800
committerDianne Hackborn <hackbod@google.com>2010-12-16 22:41:30 -0800
commit540d3d26623f44caaa82a5c973cda818cb11f946 (patch)
treeff1e184ca5c7c10c61313e8b1bb9a8c84955ed71 /core/java/android/app
parentc91893511dc1b9e634648406c9ae61b15476e65d (diff)
downloadframeworks_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.java7
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 {