diff options
author | Dianne Hackborn <hackbod@google.com> | 2010-12-11 10:37:55 -0800 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2010-12-13 12:57:02 -0800 |
commit | 30d7189067524000c738c188c4ff91f84f474d25 (patch) | |
tree | e81dd5d176ecc8a370eea32b94ae80f65a045ec4 /core/java/android/app/LoaderManager.java | |
parent | 5bd7d9347b23f7ad5301723aebcb4663897cac1b (diff) | |
download | frameworks_base-30d7189067524000c738c188c4ff91f84f474d25.zip frameworks_base-30d7189067524000c738c188c4ff91f84f474d25.tar.gz frameworks_base-30d7189067524000c738c188c4ff91f84f474d25.tar.bz2 |
Fix issue #3274841: Orientation change problem with a paused activity
Plus a bunch of debug output improvements.
And some new Intent helpers for dealing with restarting an app.
Change-Id: I50ec56bca6a86c562156b13fe8a6fdf68038a12e
Diffstat (limited to 'core/java/android/app/LoaderManager.java')
-rw-r--r-- | core/java/android/app/LoaderManager.java | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/core/java/android/app/LoaderManager.java b/core/java/android/app/LoaderManager.java index 7ae4b95..0ab987a 100644 --- a/core/java/android/app/LoaderManager.java +++ b/core/java/android/app/LoaderManager.java @@ -21,6 +21,9 @@ import android.os.Bundle; import android.util.Log; import android.util.SparseArray; +import java.io.FileDescriptor; +import java.io.PrintWriter; + /** * Interface associated with an {@link Activity} or {@link Fragment} for managing * one or more {@link android.content.Loader} instances associated with it. @@ -90,6 +93,16 @@ public abstract class LoaderManager { * is found. */ public abstract <D> Loader<D> getLoader(int id); + + /** + * Print the LoaderManager's state into the given stream. + * + * @param prefix Text to print at the front of each line. + * @param fd The raw file descriptor that the dump is being sent to. + * @param writer A PrintWriter to which the dump is to be set. + * @param args Additional arguments to the dump request. + */ + public abstract void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args); } class LoaderManagerImpl extends LoaderManager { @@ -123,7 +136,7 @@ class LoaderManagerImpl extends LoaderManager { boolean mRetainingStarted; boolean mDestroyed; boolean mListenerRegistered; - + public LoaderInfo(int id, Bundle args, LoaderManager.LoaderCallbacks<Object> callbacks) { mId = id; mArgs = args; @@ -271,6 +284,28 @@ class LoaderManagerImpl extends LoaderManager { sb.append("}"); return sb.toString(); } + + public String toBasicString() { + StringBuilder sb = new StringBuilder(64); + sb.append("LoaderInfo{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(" #"); + sb.append(mId); + sb.append("}"); + return sb.toString(); + } + + public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { + writer.print(prefix); writer.print("mId="); writer.print(mId); + writer.print(" mArgs="); writer.println(mArgs); + writer.print(prefix); writer.print("mCallbacks="); writer.println(mCallbacks); + writer.print(prefix); writer.print("mLoader="); writer.println(mLoader); + writer.print(prefix); writer.print("mData="); writer.println(mData); + writer.print(prefix); writer.print("mStarted="); writer.print(mStarted); + writer.print(" mRetaining="); writer.print(mRetaining); + writer.print(" mDestroyed="); writer.print(mDestroyed); + writer.print(" mListenerRegistered="); writer.println(mListenerRegistered); + } } LoaderManagerImpl(Activity activity, boolean started) { @@ -443,4 +478,28 @@ class LoaderManagerImpl extends LoaderManager { } mInactiveLoaders.clear(); } + + @Override + public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { + if (mLoaders.size() > 0) { + writer.print(prefix); writer.println("Active Loaders:"); + String innerPrefix = prefix + " "; + for (int i=0; i < mLoaders.size(); i++) { + LoaderInfo li = mLoaders.valueAt(i); + writer.print(prefix); writer.print(" #"); writer.print(mLoaders.keyAt(i)); + writer.print(": "); writer.println(li.toBasicString()); + li.dump(innerPrefix, fd, writer, args); + } + } + if (mInactiveLoaders.size() > 0) { + writer.print(prefix); writer.println("Inactive Loaders:"); + String innerPrefix = prefix + " "; + for (int i=0; i < mInactiveLoaders.size(); i++) { + LoaderInfo li = mInactiveLoaders.valueAt(i); + writer.print(prefix); writer.print(" #"); writer.print(mInactiveLoaders.keyAt(i)); + writer.print(": "); writer.println(li.toBasicString()); + li.dump(innerPrefix, fd, writer, args); + } + } + } } |