Loading api/current.xml +120 −40 Original line number Diff line number Diff line Loading @@ -30028,6 +30028,19 @@ <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="enableDebugLogging" return="void" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="enabled" type="boolean"> </parameter> </method> <method name="executePendingTransactions" return="boolean" abstract="true" Loading Loading @@ -32314,6 +32327,19 @@ <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="enableDebugLogging" return="void" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="enabled" type="boolean"> </parameter> </method> <method name="getLoader" return="android.content.Loader<D>" abstract="true" Loading Loading @@ -42885,17 +42911,6 @@ visibility="public" > </method> <method name="forceLoad" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="loadInBackground" return="D" abstract="true" Loading Loading @@ -49578,28 +49593,6 @@ <parameter name="uri" type="android.net.Uri"> </parameter> </method> <method name="startLoading" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="stopLoading" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> </class> <interface name="DialogInterface" abstract="true" Loading Loading @@ -54694,7 +54687,7 @@ </class> <class name="Loader" extends="java.lang.Object" abstract="true" abstract="false" static="false" final="false" deprecated="not deprecated" Loading @@ -54710,6 +54703,19 @@ <parameter name="context" type="android.content.Context"> </parameter> </constructor> <method name="dataToString" return="java.lang.String" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="data" type="D"> </parameter> </method> <method name="deliverResult" return="void" abstract="false" Loading @@ -54723,20 +54729,28 @@ <parameter name="data" type="D"> </parameter> </method> <method name="destroy" <method name="dump" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="deprecated" deprecated="not deprecated" visibility="public" > <parameter name="prefix" type="java.lang.String"> </parameter> <parameter name="fd" type="java.io.FileDescriptor"> </parameter> <parameter name="writer" type="java.io.PrintWriter"> </parameter> <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="forceLoad" return="void" abstract="true" abstract="false" native="false" synchronized="false" static="false" Loading Loading @@ -54767,6 +54781,28 @@ visibility="public" > </method> <method name="isReset" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isStarted" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="onContentChanged" return="void" abstract="false" Loading @@ -54778,6 +54814,50 @@ visibility="public" > </method> <method name="onForceLoad" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="onReset" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="onStartLoading" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="onStopLoading" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="registerListener" return="void" abstract="false" Loading Loading @@ -54806,7 +54886,7 @@ </method> <method name="startLoading" return="void" abstract="true" abstract="false" native="false" synchronized="false" static="false" Loading @@ -54817,7 +54897,7 @@ </method> <method name="stopLoading" return="void" abstract="true" abstract="false" native="false" synchronized="false" static="false" Loading Loading @@ -143200,7 +143280,7 @@ synchronized="false" static="true" final="false" deprecated="not deprecated" deprecated="deprecated" visibility="public" > <parameter name="data" type="byte[]"> core/java/android/app/Fragment.java +2 −11 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.util.AndroidRuntimeException; import android.util.AttributeSet; import android.util.DebugUtils; import android.util.SparseArray; import android.view.ContextMenu; import android.view.LayoutInflater; Loading Loading @@ -526,17 +527,7 @@ public class Fragment implements ComponentCallbacks, OnCreateContextMenuListener @Override public String toString() { StringBuilder sb = new StringBuilder(128); String simpleName = getClass().getSimpleName(); if (simpleName == null || simpleName.isEmpty()) { simpleName = getClass().getName(); int end = simpleName.lastIndexOf('.'); if (end > 0) { simpleName = simpleName.substring(end+1); } } sb.append(simpleName); sb.append("{"); sb.append(Integer.toHexString(System.identityHashCode(this))); DebugUtils.buildShortClassTag(this, sb); if (mIndex >= 0) { sb.append(" #"); sb.append(mIndex); Loading core/java/android/app/FragmentManager.java +22 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Parcel; import android.os.Parcelable; import android.util.DebugUtils; import android.util.Log; import android.util.SparseArray; import android.view.Menu; Loading Loading @@ -251,6 +252,15 @@ public abstract class FragmentManager { * @param args Additional arguments to the dump request. */ public abstract void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args); /** * Control whether the framework's internal fragment manager debugging * logs are turned on. If enabled, you will see output in logcat as * the framework performs fragment operations. */ public static void enableDebugLogging(boolean enabled) { FragmentManagerImpl.DEBUG = enabled; } } final class FragmentManagerState implements Parcelable { Loading Loading @@ -293,7 +303,7 @@ final class FragmentManagerState implements Parcelable { * Container for fragments associated with an activity. */ final class FragmentManagerImpl extends FragmentManager { static final boolean DEBUG = false; static boolean DEBUG = true; static final String TAG = "FragmentManager"; static final String TARGET_REQUEST_CODE_STATE_TAG = "android:target_req_state"; Loading Loading @@ -450,6 +460,17 @@ final class FragmentManagerImpl extends FragmentManager { return f; } @Override public String toString() { StringBuilder sb = new StringBuilder(128); sb.append("FragmentManager{"); sb.append(Integer.toHexString(System.identityHashCode(this))); sb.append(" in "); DebugUtils.buildShortClassTag(mActivity, sb); sb.append("}}"); return sb.toString(); } @Override public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { if (mActive == null || mActive.size() <= 0) { Loading core/java/android/app/LoaderManager.java +66 −38 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.app; import android.content.Loader; import android.os.Bundle; import android.util.DebugUtils; import android.util.Log; import android.util.SparseArray; Loading Loading @@ -122,6 +123,8 @@ public abstract class LoaderManager { * @param id A unique identifier for this loader. Can be whatever you want. * Identifiers are scoped to a particular LoaderManager instance. * @param args Optional arguments to supply to the loader at construction. * If a loader already exists (a new one does not need to be created), this * parameter will be ignored and the last arguments continue to be used. * @param callback Interface the LoaderManager will call to report about * changes in the state of the loader. Required. */ Loading Loading @@ -177,11 +180,20 @@ public abstract class LoaderManager { * @param args Additional arguments to the dump request. */ public abstract void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args); /** * Control whether the framework's internal loader manager debugging * logs are turned on. If enabled, you will see output in logcat as * the framework performs loader operations. */ public static void enableDebugLogging(boolean enabled) { LoaderManagerImpl.DEBUG = enabled; } } class LoaderManagerImpl extends LoaderManager { static final String TAG = "LoaderManagerImpl"; static final boolean DEBUG = true; static final String TAG = "LoaderManager"; static boolean DEBUG = true; // These are the currently active loaders. A loader is here // from the time its load is started until it has been explicitly Loading Loading @@ -237,6 +249,11 @@ class LoaderManagerImpl extends LoaderManager { mLoader = mCallbacks.onCreateLoader(mId, mArgs); } if (mLoader != null) { if (mLoader.getClass().isMemberClass()) { throw new IllegalArgumentException( "Object returned from onCreateLoader must not be a member class: " + mLoader); } if (!mListenerRegistered) { mLoader.registerListener(mId, this); mListenerRegistered = true; Loading Loading @@ -295,7 +312,10 @@ class LoaderManagerImpl extends LoaderManager { void destroy() { if (DEBUG) Log.v(TAG, " Destroying: " + this); mDestroyed = true; if (mCallbacks != null && mLoader != null && mData != null && mNeedReset) { boolean needReset = mNeedReset; mNeedReset = false; if (mCallbacks != null && mLoader != null && mData != null && needReset) { if (DEBUG) Log.v(TAG, " Reseting: " + this); String lastBecause = null; if (mActivity != null) { lastBecause = mActivity.mFragments.mNoTransactionsBecause; Loading @@ -309,7 +329,6 @@ class LoaderManagerImpl extends LoaderManager { } } } mNeedReset = false; mCallbacks = null; mData = null; if (mLoader != null) { Loading @@ -322,9 +341,10 @@ class LoaderManagerImpl extends LoaderManager { } @Override public void onLoadComplete(Loader<Object> loader, Object data) { if (DEBUG) Log.v(TAG, "onLoadComplete: " + this + " mDestroyed=" + mDestroyed); if (DEBUG) Log.v(TAG, "onLoadComplete: " + this); if (mDestroyed) { if (DEBUG) Log.v(TAG, " Ignoring load complete -- destroyed"); return; } Loading @@ -335,7 +355,7 @@ class LoaderManagerImpl extends LoaderManager { callOnLoadFinished(loader, data); } if (DEBUG) Log.v(TAG, "onLoadFinished returned: " + this); //if (DEBUG) Log.v(TAG, " onLoadFinished returned: " + this); // We have now given the application the new loader with its // loaded data, so it should have stopped using the previous Loading @@ -357,6 +377,8 @@ class LoaderManagerImpl extends LoaderManager { mActivity.mFragments.mNoTransactionsBecause = "onLoadFinished"; } try { if (DEBUG) Log.v(TAG, " onLoadFinished in " + loader + ": " + loader.dataToString(data)); mCallbacks.onLoadFinished(loader, data); } finally { if (mActivity != null) { Loading @@ -374,21 +396,9 @@ class LoaderManagerImpl extends LoaderManager { sb.append(Integer.toHexString(System.identityHashCode(this))); sb.append(" #"); sb.append(mId); if (mArgs != null) { sb.append(" "); sb.append(mArgs.toString()); } 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("}"); sb.append(" : "); DebugUtils.buildShortClassTag(mLoader, sb); sb.append("}}"); return sb.toString(); } Loading @@ -397,6 +407,9 @@ class LoaderManagerImpl extends LoaderManager { writer.print(" mArgs="); writer.println(mArgs); writer.print(prefix); writer.print("mCallbacks="); writer.println(mCallbacks); writer.print(prefix); writer.print("mLoader="); writer.println(mLoader); if (mLoader != null) { mLoader.dump(prefix + " ", fd, writer, args); } writer.print(prefix); writer.print("mData="); writer.println(mData); writer.print(prefix); writer.print("mStarted="); writer.print(mStarted); writer.print(" mRetaining="); writer.print(mRetaining); Loading Loading @@ -434,12 +447,14 @@ class LoaderManagerImpl extends LoaderManager { public <D> Loader<D> initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback) { LoaderInfo info = mLoaders.get(id); if (DEBUG) Log.v(TAG, "initLoader in " + this + ": cur=" + info); if (DEBUG) Log.v(TAG, "initLoader in " + this + ": args=" + args); if (info == null) { // Loader doesn't already exist; create. info = createLoader(id, args, (LoaderManager.LoaderCallbacks<Object>)callback); if (DEBUG) Log.v(TAG, " Created new loader " + info); } else { if (DEBUG) Log.v(TAG, " Re-using existing loader " + info); info.mCallbacks = (LoaderManager.LoaderCallbacks<Object>)callback; } Loading @@ -454,7 +469,7 @@ class LoaderManagerImpl extends LoaderManager { @SuppressWarnings("unchecked") public <D> Loader<D> restartLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback) { LoaderInfo info = mLoaders.get(id); if (DEBUG) Log.v(TAG, "restartLoader in " + this + ": cur=" + info); if (DEBUG) Log.v(TAG, "restartLoader in " + this + ": args=" + args); if (info != null) { LoaderInfo inactive = mInactiveLoaders.get(id); if (inactive != null) { Loading @@ -463,7 +478,7 @@ class LoaderManagerImpl extends LoaderManager { // called from within onLoadComplete, where we haven't // yet destroyed the last inactive loader. So just do // that now. if (DEBUG) Log.v(TAG, " Removing last inactive loader in " + this); if (DEBUG) Log.v(TAG, " Removing last inactive loader: " + info); inactive.mNeedReset = false; inactive.destroy(); mInactiveLoaders.put(id, info); Loading @@ -472,13 +487,13 @@ class LoaderManagerImpl extends LoaderManager { // waiting for! Now we have three active loaders... let's just // drop the one in the middle, since we are still waiting for // its result but that result is already out of date. if (DEBUG) Log.v(TAG, " Removing intermediate loader in " + this); if (DEBUG) Log.v(TAG, " Removing intermediate loader: " + info); info.destroy(); } } else { // Keep track of the previous instance of this loader so we can destroy // it when the new one completes. if (DEBUG) Log.v(TAG, " Making inactive: " + info); if (DEBUG) Log.v(TAG, " Making last loader inactive: " + info); mInactiveLoaders.put(id, info); } } Loading @@ -488,7 +503,7 @@ class LoaderManagerImpl extends LoaderManager { } public void destroyLoader(int id) { if (DEBUG) Log.v(TAG, "stopLoader in " + this + " of " + id); if (DEBUG) Log.v(TAG, "destroyLoader in " + this + " of " + id); int idx = mLoaders.indexOfKey(id); if (idx >= 0) { LoaderInfo info = mLoaders.valueAt(idx); Loading @@ -513,7 +528,7 @@ class LoaderManagerImpl extends LoaderManager { } void doStart() { if (DEBUG) Log.v(TAG, "Starting: " + this); if (DEBUG) Log.v(TAG, "Starting in " + this); if (mStarted) { RuntimeException e = new RuntimeException("here"); e.fillInStackTrace(); Loading @@ -531,7 +546,7 @@ class LoaderManagerImpl extends LoaderManager { } void doStop() { if (DEBUG) Log.v(TAG, "Stopping: " + this); if (DEBUG) Log.v(TAG, "Stopping in " + this); if (!mStarted) { RuntimeException e = new RuntimeException("here"); e.fillInStackTrace(); Loading @@ -546,7 +561,7 @@ class LoaderManagerImpl extends LoaderManager { } void doRetain() { if (DEBUG) Log.v(TAG, "Retaining: " + this); if (DEBUG) Log.v(TAG, "Retaining in " + this); if (!mStarted) { RuntimeException e = new RuntimeException("here"); e.fillInStackTrace(); Loading @@ -562,29 +577,42 @@ class LoaderManagerImpl extends LoaderManager { } void finishRetain() { if (DEBUG) Log.v(TAG, "Finished Retaining: " + this); if (mRetaining) { if (DEBUG) Log.v(TAG, "Finished Retaining in " + this); mRetaining = false; for (int i = mLoaders.size()-1; i >= 0; i--) { mLoaders.valueAt(i).finishRetain(); } } } void doDestroy() { if (!mRetaining) { if (DEBUG) Log.v(TAG, "Destroying Active: " + this); if (DEBUG) Log.v(TAG, "Destroying Active in " + this); for (int i = mLoaders.size()-1; i >= 0; i--) { mLoaders.valueAt(i).destroy(); } } if (DEBUG) Log.v(TAG, "Destroying Inactive: " + this); if (DEBUG) Log.v(TAG, "Destroying Inactive in " + this); for (int i = mInactiveLoaders.size()-1; i >= 0; i--) { mInactiveLoaders.valueAt(i).destroy(); } mInactiveLoaders.clear(); } @Override public String toString() { StringBuilder sb = new StringBuilder(128); sb.append("LoaderManager{"); sb.append(Integer.toHexString(System.identityHashCode(this))); sb.append(" in "); DebugUtils.buildShortClassTag(mActivity, sb); sb.append("}}"); return sb.toString(); } @Override public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { if (mLoaders.size() > 0) { Loading @@ -593,7 +621,7 @@ class LoaderManagerImpl extends LoaderManager { 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()); writer.print(": "); writer.println(li.toString()); li.dump(innerPrefix, fd, writer, args); } } Loading @@ -603,7 +631,7 @@ class LoaderManagerImpl extends LoaderManager { 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()); writer.print(": "); writer.println(li.toString()); li.dump(innerPrefix, fd, writer, args); } } Loading core/java/android/content/AsyncTaskLoader.java +1 −5 Original line number Diff line number Diff line Loading @@ -53,12 +53,8 @@ public abstract class AsyncTaskLoader<D> extends Loader<D> { super(context); } /** * Force an asynchronous load. Unlike {@link #startLoading()} this will ignore a previously * loaded data set and load a new one. */ @Override public void forceLoad() { protected void onForceLoad() { cancelLoad(); mTask = new LoadTask(); mTask.execute((Void[]) null); Loading Loading
api/current.xml +120 −40 Original line number Diff line number Diff line Loading @@ -30028,6 +30028,19 @@ <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="enableDebugLogging" return="void" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="enabled" type="boolean"> </parameter> </method> <method name="executePendingTransactions" return="boolean" abstract="true" Loading Loading @@ -32314,6 +32327,19 @@ <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="enableDebugLogging" return="void" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="enabled" type="boolean"> </parameter> </method> <method name="getLoader" return="android.content.Loader<D>" abstract="true" Loading Loading @@ -42885,17 +42911,6 @@ visibility="public" > </method> <method name="forceLoad" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="loadInBackground" return="D" abstract="true" Loading Loading @@ -49578,28 +49593,6 @@ <parameter name="uri" type="android.net.Uri"> </parameter> </method> <method name="startLoading" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="stopLoading" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> </class> <interface name="DialogInterface" abstract="true" Loading Loading @@ -54694,7 +54687,7 @@ </class> <class name="Loader" extends="java.lang.Object" abstract="true" abstract="false" static="false" final="false" deprecated="not deprecated" Loading @@ -54710,6 +54703,19 @@ <parameter name="context" type="android.content.Context"> </parameter> </constructor> <method name="dataToString" return="java.lang.String" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="data" type="D"> </parameter> </method> <method name="deliverResult" return="void" abstract="false" Loading @@ -54723,20 +54729,28 @@ <parameter name="data" type="D"> </parameter> </method> <method name="destroy" <method name="dump" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="deprecated" deprecated="not deprecated" visibility="public" > <parameter name="prefix" type="java.lang.String"> </parameter> <parameter name="fd" type="java.io.FileDescriptor"> </parameter> <parameter name="writer" type="java.io.PrintWriter"> </parameter> <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="forceLoad" return="void" abstract="true" abstract="false" native="false" synchronized="false" static="false" Loading Loading @@ -54767,6 +54781,28 @@ visibility="public" > </method> <method name="isReset" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isStarted" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="onContentChanged" return="void" abstract="false" Loading @@ -54778,6 +54814,50 @@ visibility="public" > </method> <method name="onForceLoad" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="onReset" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="onStartLoading" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="onStopLoading" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="registerListener" return="void" abstract="false" Loading Loading @@ -54806,7 +54886,7 @@ </method> <method name="startLoading" return="void" abstract="true" abstract="false" native="false" synchronized="false" static="false" Loading @@ -54817,7 +54897,7 @@ </method> <method name="stopLoading" return="void" abstract="true" abstract="false" native="false" synchronized="false" static="false" Loading Loading @@ -143200,7 +143280,7 @@ synchronized="false" static="true" final="false" deprecated="not deprecated" deprecated="deprecated" visibility="public" > <parameter name="data" type="byte[]">
core/java/android/app/Fragment.java +2 −11 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.util.AndroidRuntimeException; import android.util.AttributeSet; import android.util.DebugUtils; import android.util.SparseArray; import android.view.ContextMenu; import android.view.LayoutInflater; Loading Loading @@ -526,17 +527,7 @@ public class Fragment implements ComponentCallbacks, OnCreateContextMenuListener @Override public String toString() { StringBuilder sb = new StringBuilder(128); String simpleName = getClass().getSimpleName(); if (simpleName == null || simpleName.isEmpty()) { simpleName = getClass().getName(); int end = simpleName.lastIndexOf('.'); if (end > 0) { simpleName = simpleName.substring(end+1); } } sb.append(simpleName); sb.append("{"); sb.append(Integer.toHexString(System.identityHashCode(this))); DebugUtils.buildShortClassTag(this, sb); if (mIndex >= 0) { sb.append(" #"); sb.append(mIndex); Loading
core/java/android/app/FragmentManager.java +22 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Parcel; import android.os.Parcelable; import android.util.DebugUtils; import android.util.Log; import android.util.SparseArray; import android.view.Menu; Loading Loading @@ -251,6 +252,15 @@ public abstract class FragmentManager { * @param args Additional arguments to the dump request. */ public abstract void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args); /** * Control whether the framework's internal fragment manager debugging * logs are turned on. If enabled, you will see output in logcat as * the framework performs fragment operations. */ public static void enableDebugLogging(boolean enabled) { FragmentManagerImpl.DEBUG = enabled; } } final class FragmentManagerState implements Parcelable { Loading Loading @@ -293,7 +303,7 @@ final class FragmentManagerState implements Parcelable { * Container for fragments associated with an activity. */ final class FragmentManagerImpl extends FragmentManager { static final boolean DEBUG = false; static boolean DEBUG = true; static final String TAG = "FragmentManager"; static final String TARGET_REQUEST_CODE_STATE_TAG = "android:target_req_state"; Loading Loading @@ -450,6 +460,17 @@ final class FragmentManagerImpl extends FragmentManager { return f; } @Override public String toString() { StringBuilder sb = new StringBuilder(128); sb.append("FragmentManager{"); sb.append(Integer.toHexString(System.identityHashCode(this))); sb.append(" in "); DebugUtils.buildShortClassTag(mActivity, sb); sb.append("}}"); return sb.toString(); } @Override public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { if (mActive == null || mActive.size() <= 0) { Loading
core/java/android/app/LoaderManager.java +66 −38 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.app; import android.content.Loader; import android.os.Bundle; import android.util.DebugUtils; import android.util.Log; import android.util.SparseArray; Loading Loading @@ -122,6 +123,8 @@ public abstract class LoaderManager { * @param id A unique identifier for this loader. Can be whatever you want. * Identifiers are scoped to a particular LoaderManager instance. * @param args Optional arguments to supply to the loader at construction. * If a loader already exists (a new one does not need to be created), this * parameter will be ignored and the last arguments continue to be used. * @param callback Interface the LoaderManager will call to report about * changes in the state of the loader. Required. */ Loading Loading @@ -177,11 +180,20 @@ public abstract class LoaderManager { * @param args Additional arguments to the dump request. */ public abstract void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args); /** * Control whether the framework's internal loader manager debugging * logs are turned on. If enabled, you will see output in logcat as * the framework performs loader operations. */ public static void enableDebugLogging(boolean enabled) { LoaderManagerImpl.DEBUG = enabled; } } class LoaderManagerImpl extends LoaderManager { static final String TAG = "LoaderManagerImpl"; static final boolean DEBUG = true; static final String TAG = "LoaderManager"; static boolean DEBUG = true; // These are the currently active loaders. A loader is here // from the time its load is started until it has been explicitly Loading Loading @@ -237,6 +249,11 @@ class LoaderManagerImpl extends LoaderManager { mLoader = mCallbacks.onCreateLoader(mId, mArgs); } if (mLoader != null) { if (mLoader.getClass().isMemberClass()) { throw new IllegalArgumentException( "Object returned from onCreateLoader must not be a member class: " + mLoader); } if (!mListenerRegistered) { mLoader.registerListener(mId, this); mListenerRegistered = true; Loading Loading @@ -295,7 +312,10 @@ class LoaderManagerImpl extends LoaderManager { void destroy() { if (DEBUG) Log.v(TAG, " Destroying: " + this); mDestroyed = true; if (mCallbacks != null && mLoader != null && mData != null && mNeedReset) { boolean needReset = mNeedReset; mNeedReset = false; if (mCallbacks != null && mLoader != null && mData != null && needReset) { if (DEBUG) Log.v(TAG, " Reseting: " + this); String lastBecause = null; if (mActivity != null) { lastBecause = mActivity.mFragments.mNoTransactionsBecause; Loading @@ -309,7 +329,6 @@ class LoaderManagerImpl extends LoaderManager { } } } mNeedReset = false; mCallbacks = null; mData = null; if (mLoader != null) { Loading @@ -322,9 +341,10 @@ class LoaderManagerImpl extends LoaderManager { } @Override public void onLoadComplete(Loader<Object> loader, Object data) { if (DEBUG) Log.v(TAG, "onLoadComplete: " + this + " mDestroyed=" + mDestroyed); if (DEBUG) Log.v(TAG, "onLoadComplete: " + this); if (mDestroyed) { if (DEBUG) Log.v(TAG, " Ignoring load complete -- destroyed"); return; } Loading @@ -335,7 +355,7 @@ class LoaderManagerImpl extends LoaderManager { callOnLoadFinished(loader, data); } if (DEBUG) Log.v(TAG, "onLoadFinished returned: " + this); //if (DEBUG) Log.v(TAG, " onLoadFinished returned: " + this); // We have now given the application the new loader with its // loaded data, so it should have stopped using the previous Loading @@ -357,6 +377,8 @@ class LoaderManagerImpl extends LoaderManager { mActivity.mFragments.mNoTransactionsBecause = "onLoadFinished"; } try { if (DEBUG) Log.v(TAG, " onLoadFinished in " + loader + ": " + loader.dataToString(data)); mCallbacks.onLoadFinished(loader, data); } finally { if (mActivity != null) { Loading @@ -374,21 +396,9 @@ class LoaderManagerImpl extends LoaderManager { sb.append(Integer.toHexString(System.identityHashCode(this))); sb.append(" #"); sb.append(mId); if (mArgs != null) { sb.append(" "); sb.append(mArgs.toString()); } 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("}"); sb.append(" : "); DebugUtils.buildShortClassTag(mLoader, sb); sb.append("}}"); return sb.toString(); } Loading @@ -397,6 +407,9 @@ class LoaderManagerImpl extends LoaderManager { writer.print(" mArgs="); writer.println(mArgs); writer.print(prefix); writer.print("mCallbacks="); writer.println(mCallbacks); writer.print(prefix); writer.print("mLoader="); writer.println(mLoader); if (mLoader != null) { mLoader.dump(prefix + " ", fd, writer, args); } writer.print(prefix); writer.print("mData="); writer.println(mData); writer.print(prefix); writer.print("mStarted="); writer.print(mStarted); writer.print(" mRetaining="); writer.print(mRetaining); Loading Loading @@ -434,12 +447,14 @@ class LoaderManagerImpl extends LoaderManager { public <D> Loader<D> initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback) { LoaderInfo info = mLoaders.get(id); if (DEBUG) Log.v(TAG, "initLoader in " + this + ": cur=" + info); if (DEBUG) Log.v(TAG, "initLoader in " + this + ": args=" + args); if (info == null) { // Loader doesn't already exist; create. info = createLoader(id, args, (LoaderManager.LoaderCallbacks<Object>)callback); if (DEBUG) Log.v(TAG, " Created new loader " + info); } else { if (DEBUG) Log.v(TAG, " Re-using existing loader " + info); info.mCallbacks = (LoaderManager.LoaderCallbacks<Object>)callback; } Loading @@ -454,7 +469,7 @@ class LoaderManagerImpl extends LoaderManager { @SuppressWarnings("unchecked") public <D> Loader<D> restartLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback) { LoaderInfo info = mLoaders.get(id); if (DEBUG) Log.v(TAG, "restartLoader in " + this + ": cur=" + info); if (DEBUG) Log.v(TAG, "restartLoader in " + this + ": args=" + args); if (info != null) { LoaderInfo inactive = mInactiveLoaders.get(id); if (inactive != null) { Loading @@ -463,7 +478,7 @@ class LoaderManagerImpl extends LoaderManager { // called from within onLoadComplete, where we haven't // yet destroyed the last inactive loader. So just do // that now. if (DEBUG) Log.v(TAG, " Removing last inactive loader in " + this); if (DEBUG) Log.v(TAG, " Removing last inactive loader: " + info); inactive.mNeedReset = false; inactive.destroy(); mInactiveLoaders.put(id, info); Loading @@ -472,13 +487,13 @@ class LoaderManagerImpl extends LoaderManager { // waiting for! Now we have three active loaders... let's just // drop the one in the middle, since we are still waiting for // its result but that result is already out of date. if (DEBUG) Log.v(TAG, " Removing intermediate loader in " + this); if (DEBUG) Log.v(TAG, " Removing intermediate loader: " + info); info.destroy(); } } else { // Keep track of the previous instance of this loader so we can destroy // it when the new one completes. if (DEBUG) Log.v(TAG, " Making inactive: " + info); if (DEBUG) Log.v(TAG, " Making last loader inactive: " + info); mInactiveLoaders.put(id, info); } } Loading @@ -488,7 +503,7 @@ class LoaderManagerImpl extends LoaderManager { } public void destroyLoader(int id) { if (DEBUG) Log.v(TAG, "stopLoader in " + this + " of " + id); if (DEBUG) Log.v(TAG, "destroyLoader in " + this + " of " + id); int idx = mLoaders.indexOfKey(id); if (idx >= 0) { LoaderInfo info = mLoaders.valueAt(idx); Loading @@ -513,7 +528,7 @@ class LoaderManagerImpl extends LoaderManager { } void doStart() { if (DEBUG) Log.v(TAG, "Starting: " + this); if (DEBUG) Log.v(TAG, "Starting in " + this); if (mStarted) { RuntimeException e = new RuntimeException("here"); e.fillInStackTrace(); Loading @@ -531,7 +546,7 @@ class LoaderManagerImpl extends LoaderManager { } void doStop() { if (DEBUG) Log.v(TAG, "Stopping: " + this); if (DEBUG) Log.v(TAG, "Stopping in " + this); if (!mStarted) { RuntimeException e = new RuntimeException("here"); e.fillInStackTrace(); Loading @@ -546,7 +561,7 @@ class LoaderManagerImpl extends LoaderManager { } void doRetain() { if (DEBUG) Log.v(TAG, "Retaining: " + this); if (DEBUG) Log.v(TAG, "Retaining in " + this); if (!mStarted) { RuntimeException e = new RuntimeException("here"); e.fillInStackTrace(); Loading @@ -562,29 +577,42 @@ class LoaderManagerImpl extends LoaderManager { } void finishRetain() { if (DEBUG) Log.v(TAG, "Finished Retaining: " + this); if (mRetaining) { if (DEBUG) Log.v(TAG, "Finished Retaining in " + this); mRetaining = false; for (int i = mLoaders.size()-1; i >= 0; i--) { mLoaders.valueAt(i).finishRetain(); } } } void doDestroy() { if (!mRetaining) { if (DEBUG) Log.v(TAG, "Destroying Active: " + this); if (DEBUG) Log.v(TAG, "Destroying Active in " + this); for (int i = mLoaders.size()-1; i >= 0; i--) { mLoaders.valueAt(i).destroy(); } } if (DEBUG) Log.v(TAG, "Destroying Inactive: " + this); if (DEBUG) Log.v(TAG, "Destroying Inactive in " + this); for (int i = mInactiveLoaders.size()-1; i >= 0; i--) { mInactiveLoaders.valueAt(i).destroy(); } mInactiveLoaders.clear(); } @Override public String toString() { StringBuilder sb = new StringBuilder(128); sb.append("LoaderManager{"); sb.append(Integer.toHexString(System.identityHashCode(this))); sb.append(" in "); DebugUtils.buildShortClassTag(mActivity, sb); sb.append("}}"); return sb.toString(); } @Override public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { if (mLoaders.size() > 0) { Loading @@ -593,7 +621,7 @@ class LoaderManagerImpl extends LoaderManager { 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()); writer.print(": "); writer.println(li.toString()); li.dump(innerPrefix, fd, writer, args); } } Loading @@ -603,7 +631,7 @@ class LoaderManagerImpl extends LoaderManager { 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()); writer.print(": "); writer.println(li.toString()); li.dump(innerPrefix, fd, writer, args); } } Loading
core/java/android/content/AsyncTaskLoader.java +1 −5 Original line number Diff line number Diff line Loading @@ -53,12 +53,8 @@ public abstract class AsyncTaskLoader<D> extends Loader<D> { super(context); } /** * Force an asynchronous load. Unlike {@link #startLoading()} this will ignore a previously * loaded data set and load a new one. */ @Override public void forceLoad() { protected void onForceLoad() { cancelLoad(); mTask = new LoadTask(); mTask.execute((Void[]) null); Loading