summaryrefslogtreecommitdiffstats
path: root/core/java/android/app/LoaderManager.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-12-11 10:37:55 -0800
committerDianne Hackborn <hackbod@google.com>2010-12-13 12:57:02 -0800
commit30d7189067524000c738c188c4ff91f84f474d25 (patch)
treee81dd5d176ecc8a370eea32b94ae80f65a045ec4 /core/java/android/app/LoaderManager.java
parent5bd7d9347b23f7ad5301723aebcb4663897cac1b (diff)
downloadframeworks_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.java61
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);
+ }
+ }
+ }
}