package android.support.v4.app;
import android.os.Bundle;
import android.support.v4.content.Loader;
import android.support.v4.content.Loader.OnLoadCompleteListener;
import android.support.v4.util.DebugUtils;
import android.support.v4.util.SparseArrayCompat;
import android.util.Log;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.reflect.Modifier;
class LoaderManagerImpl
extends LoaderManager
{
static boolean DEBUG = false;
static final String TAG = "LoaderManager";
FragmentActivity mActivity;
boolean mCreatingLoader;
final SparseArrayCompat<LoaderInfo> mInactiveLoaders = new SparseArrayCompat();
final SparseArrayCompat<LoaderInfo> mLoaders = new SparseArrayCompat();
boolean mRetaining;
boolean mRetainingStarted;
boolean mStarted;
final String mWho;
LoaderManagerImpl(String paramString, FragmentActivity paramFragmentActivity, boolean paramBoolean)
{
this.mWho = paramString;
this.mActivity = paramFragmentActivity;
this.mStarted = paramBoolean;
}
private LoaderInfo createAndInstallLoader(int paramInt, Bundle paramBundle, LoaderManager.LoaderCallbacks<Object> paramLoaderCallbacks)
{
try
{
this.mCreatingLoader = true;
LoaderInfo localLoaderInfo = createLoader(paramInt, paramBundle, paramLoaderCallbacks);
installLoader(localLoaderInfo);
return localLoaderInfo;
}
finally
{
this.mCreatingLoader = false;
}
}
private LoaderInfo createLoader(int paramInt, Bundle paramBundle, LoaderManager.LoaderCallbacks<Object> paramLoaderCallbacks)
{
LoaderInfo localLoaderInfo = new LoaderInfo(paramInt, paramBundle, paramLoaderCallbacks);
localLoaderInfo.mLoader = paramLoaderCallbacks.onCreateLoader(paramInt, paramBundle);
return localLoaderInfo;
}
public void destroyLoader(int paramInt)
{
if (this.mCreatingLoader) {
throw new IllegalStateException("Called while creating a loader");
}
if (DEBUG) {
Log.v("LoaderManager", "destroyLoader in " + this + " of " + paramInt);
}
int i = this.mLoaders.indexOfKey(paramInt);
if (i >= 0)
{
LoaderInfo localLoaderInfo2 = (LoaderInfo)this.mLoaders.valueAt(i);
this.mLoaders.removeAt(i);
localLoaderInfo2.destroy();
}
int j = this.mInactiveLoaders.indexOfKey(paramInt);
if (j >= 0)
{
LoaderInfo localLoaderInfo1 = (LoaderInfo)this.mInactiveLoaders.valueAt(j);
this.mInactiveLoaders.removeAt(j);
localLoaderInfo1.destroy();
}
if ((this.mActivity != null) && (!hasRunningLoaders())) {
this.mActivity.mFragments.startPendingDeferredFragments();
}
}
void doDestroy()
{
if (!this.mRetaining)
{
if (DEBUG) {
Log.v("LoaderManager", "Destroying Active in " + this);
}
for (int j = -1 + this.mLoaders.size(); j >= 0; j--) {
((LoaderInfo)this.mLoaders.valueAt(j)).destroy();
}
}
if (DEBUG) {
Log.v("LoaderManager", "Destroying Inactive in " + this);
}
for (int i = -1 + this.mInactiveLoaders.size(); i >= 0; i--) {
((LoaderInfo)this.mInactiveLoaders.valueAt(i)).destroy();
}
this.mInactiveLoaders.clear();
}
void doReportNextStart()
{
for (int i = -1 + this.mLoaders.size(); i >= 0; i--) {
((LoaderInfo)this.mLoaders.valueAt(i)).mReportNextStart = true;
}
}
void doReportStart()
{
for (int i = -1 + this.mLoaders.size(); i >= 0; i--) {
((LoaderInfo)this.mLoaders.valueAt(i)).reportStart();
}
}
void doRetain()
{
if (DEBUG) {
Log.v("LoaderManager", "Retaining in " + this);
}
if (!this.mStarted)
{
RuntimeException localRuntimeException = new RuntimeException("here");
localRuntimeException.fillInStackTrace();
Log.w("LoaderManager", "Called doRetain when not started: " + this, localRuntimeException);
}
for (;;)
{
return;
this.mRetaining = true;
this.mStarted = false;
for (int i = -1 + this.mLoaders.size(); i >= 0; i--) {
((LoaderInfo)this.mLoaders.valueAt(i)).retain();
}
}
}
void doStart()
{
if (DEBUG) {
Log.v("LoaderManager", "Starting in " + this);
}
if (this.mStarted)
{
RuntimeException localRuntimeException = new RuntimeException("here");
localRuntimeException.fillInStackTrace();
Log.w("LoaderManager", "Called doStart when already started: " + this, localRuntimeException);
}
for (;;)
{
return;
this.mStarted = true;
for (int i = -1 + this.mLoaders.size(); i >= 0; i--) {
((LoaderInfo)this.mLoaders.valueAt(i)).start();
}
}
}
void doStop()
{
if (DEBUG) {
Log.v("LoaderManager", "Stopping in " + this);
}
if (!this.mStarted)
{
RuntimeException localRuntimeException = new RuntimeException("here");
localRuntimeException.fillInStackTrace();
Log.w("LoaderManager", "Called doStop when not started: " + this, localRuntimeException);
}
for (;;)
{
return;
for (int i = -1 + this.mLoaders.size(); i >= 0; i--) {
((LoaderInfo)this.mLoaders.valueAt(i)).stop();
}
this.mStarted = false;
}
}
public void dump(String paramString, FileDescriptor paramFileDescriptor, PrintWriter paramPrintWriter, String[] paramArrayOfString)
{
if (this.mLoaders.size() > 0)
{
paramPrintWriter.print(paramString);
paramPrintWriter.println("Active Loaders:");
String str2 = paramString + " ";
for (int j = 0; j < this.mLoaders.size(); j++)
{
LoaderInfo localLoaderInfo2 = (LoaderInfo)this.mLoaders.valueAt(j);
paramPrintWriter.print(paramString);
paramPrintWriter.print(" #");
paramPrintWriter.print(this.mLoaders.keyAt(j));
paramPrintWriter.print(": ");
paramPrintWriter.println(localLoaderInfo2.toString());
localLoaderInfo2.dump(str2, paramFileDescriptor, paramPrintWriter, paramArrayOfString);
}
}
if (this.mInactiveLoaders.size() > 0)
{
paramPrintWriter.print(paramString);
paramPrintWriter.println("Inactive Loaders:");
String str1 = paramString + " ";
for (int i = 0; i < this.mInactiveLoaders.size(); i++)
{
LoaderInfo localLoaderInfo1 = (LoaderInfo)this.mInactiveLoaders.valueAt(i);
paramPrintWriter.print(paramString);
paramPrintWriter.print(" #");
paramPrintWriter.print(this.mInactiveLoaders.keyAt(i));
paramPrintWriter.print(": ");
paramPrintWriter.println(localLoaderInfo1.toString());
localLoaderInfo1.dump(str1, paramFileDescriptor, paramPrintWriter, paramArrayOfString);
}
}
}
void finishRetain()
{
if (this.mRetaining)
{
if (DEBUG) {
Log.v("LoaderManager", "Finished Retaining in " + this);
}
this.mRetaining = false;
for (int i = -1 + this.mLoaders.size(); i >= 0; i--) {
((LoaderInfo)this.mLoaders.valueAt(i)).finishRetain();
}
}
}
public <D> Loader<D> getLoader(int paramInt)
{
if (this.mCreatingLoader) {
throw new IllegalStateException("Called while creating a loader");
}
LoaderInfo localLoaderInfo = (LoaderInfo)this.mLoaders.get(paramInt);
Loader localLoader;
if (localLoaderInfo != null) {
if (localLoaderInfo.mPendingLoader != null) {
localLoader = localLoaderInfo.mPendingLoader.mLoader;
}
}
for (;;)
{
return localLoader;
localLoader = localLoaderInfo.mLoader;
continue;
localLoader = null;
}
}
public boolean hasRunningLoaders()
{
boolean bool1 = false;
int i = this.mLoaders.size();
int j = 0;
if (j < i)
{
LoaderInfo localLoaderInfo = (LoaderInfo)this.mLoaders.valueAt(j);
if ((localLoaderInfo.mStarted) && (!localLoaderInfo.mDeliveredData)) {}
for (boolean bool2 = true;; bool2 = false)
{
bool1 |= bool2;
j++;
break;
}
}
return bool1;
}
public <D> Loader<D> initLoader(int paramInt, Bundle paramBundle, LoaderManager.LoaderCallbacks<D> paramLoaderCallbacks)
{
if (this.mCreatingLoader) {
throw new IllegalStateException("Called while creating a loader");
}
LoaderInfo localLoaderInfo = (LoaderInfo)this.mLoaders.get(paramInt);
if (DEBUG) {
Log.v("LoaderManager", "initLoader in " + this + ": args=" + paramBundle);
}
if (localLoaderInfo == null)
{
localLoaderInfo = createAndInstallLoader(paramInt, paramBundle, paramLoaderCallbacks);
if (DEBUG) {
Log.v("LoaderManager", " Created new loader " + localLoaderInfo);
}
}
for (;;)
{
if ((localLoaderInfo.mHaveData) && (this.mStarted)) {
localLoaderInfo.callOnLoadFinished(localLoaderInfo.mLoader, localLoaderInfo.mData);
}
return localLoaderInfo.mLoader;
if (DEBUG) {
Log.v("LoaderManager", " Re-using existing loader " + localLoaderInfo);
}
localLoaderInfo.mCallbacks = paramLoaderCallbacks;
}
}
void installLoader(LoaderInfo paramLoaderInfo)
{
this.mLoaders.put(paramLoaderInfo.mId, paramLoaderInfo);
if (this.mStarted) {
paramLoaderInfo.start();
}
}
public <D> Loader<D> restartLoader(int paramInt, Bundle paramBundle, LoaderManager.LoaderCallbacks<D> paramLoaderCallbacks)
{
if (this.mCreatingLoader) {
throw new IllegalStateException("Called while creating a loader");
}
LoaderInfo localLoaderInfo1 = (LoaderInfo)this.mLoaders.get(paramInt);
if (DEBUG) {
Log.v("LoaderManager", "restartLoader in " + this + ": args=" + paramBundle);
}
if (localLoaderInfo1 != null)
{
LoaderInfo localLoaderInfo2 = (LoaderInfo)this.mInactiveLoaders.get(paramInt);
if (localLoaderInfo2 == null) {
break label317;
}
if (!localLoaderInfo1.mHaveData) {
break label179;
}
if (DEBUG) {
Log.v("LoaderManager", " Removing last inactive loader: " + localLoaderInfo1);
}
localLoaderInfo2.mDeliveredData = false;
localLoaderInfo2.destroy();
localLoaderInfo1.mLoader.abandon();
this.mInactiveLoaders.put(paramInt, localLoaderInfo1);
}
for (;;)
{
for (Loader localLoader = createAndInstallLoader(paramInt, paramBundle, paramLoaderCallbacks).mLoader;; localLoader = localLoaderInfo1.mPendingLoader.mLoader)
{
return localLoader;
label179:
if (!localLoaderInfo1.mStarted)
{
if (DEBUG) {
Log.v("LoaderManager", " Current loader is stopped; replacing");
}
this.mLoaders.put(paramInt, null);
localLoaderInfo1.destroy();
break;
}
if (localLoaderInfo1.mPendingLoader != null)
{
if (DEBUG) {
Log.v("LoaderManager", " Removing pending loader: " + localLoaderInfo1.mPendingLoader);
}
localLoaderInfo1.mPendingLoader.destroy();
localLoaderInfo1.mPendingLoader = null;
}
if (DEBUG) {
Log.v("LoaderManager", " Enqueuing as new pending loader");
}
localLoaderInfo1.mPendingLoader = createLoader(paramInt, paramBundle, paramLoaderCallbacks);
}
label317:
if (DEBUG) {
Log.v("LoaderManager", " Making last loader inactive: " + localLoaderInfo1);
}
localLoaderInfo1.mLoader.abandon();
this.mInactiveLoaders.put(paramInt, localLoaderInfo1);
}
}
public String toString()
{
StringBuilder localStringBuilder = new StringBuilder(128);
localStringBuilder.append("LoaderManager{");
localStringBuilder.append(Integer.toHexString(System.identityHashCode(this)));
localStringBuilder.append(" in ");
DebugUtils.buildShortClassTag(this.mActivity, localStringBuilder);
localStringBuilder.append("}}");
return localStringBuilder.toString();
}
void updateActivity(FragmentActivity paramFragmentActivity)
{
this.mActivity = paramFragmentActivity;
}
final class LoaderInfo
implements Loader.OnLoadCompleteListener<Object>
{
final Bundle mArgs;
LoaderManager.LoaderCallbacks<Object> mCallbacks;
Object mData;
boolean mDeliveredData;
boolean mDestroyed;
boolean mHaveData;
final int mId;
boolean mListenerRegistered;
Loader<Object> mLoader;
LoaderInfo mPendingLoader;
boolean mReportNextStart;
boolean mRetaining;
boolean mRetainingStarted;
boolean mStarted;
public LoaderInfo(Bundle paramBundle, LoaderManager.LoaderCallbacks<Object> paramLoaderCallbacks)
{
this.mId = paramBundle;
this.mArgs = paramLoaderCallbacks;
Object localObject;
this.mCallbacks = localObject;
}
void callOnLoadFinished(Loader<Object> paramLoader, Object paramObject)
{
String str;
if (this.mCallbacks != null)
{
str = null;
if (LoaderManagerImpl.this.mActivity != null)
{
str = LoaderManagerImpl.this.mActivity.mFragments.mNoTransactionsBecause;
LoaderManagerImpl.this.mActivity.mFragments.mNoTransactionsBecause = "onLoadFinished";
}
}
try
{
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " onLoadFinished in " + paramLoader + ": " + paramLoader.dataToString(paramObject));
}
this.mCallbacks.onLoadFinished(paramLoader, paramObject);
if (LoaderManagerImpl.this.mActivity != null) {
LoaderManagerImpl.this.mActivity.mFragments.mNoTransactionsBecause = str;
}
this.mDeliveredData = true;
return;
}
finally
{
if (LoaderManagerImpl.this.mActivity != null) {
LoaderManagerImpl.this.mActivity.mFragments.mNoTransactionsBecause = str;
}
}
}
void destroy()
{
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " Destroying: " + this);
}
this.mDestroyed = true;
boolean bool = this.mDeliveredData;
this.mDeliveredData = false;
String str;
if ((this.mCallbacks != null) && (this.mLoader != null) && (this.mHaveData) && (bool))
{
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " Reseting: " + this);
}
str = null;
if (LoaderManagerImpl.this.mActivity != null)
{
str = LoaderManagerImpl.this.mActivity.mFragments.mNoTransactionsBecause;
LoaderManagerImpl.this.mActivity.mFragments.mNoTransactionsBecause = "onLoaderReset";
}
}
try
{
this.mCallbacks.onLoaderReset(this.mLoader);
if (LoaderManagerImpl.this.mActivity != null) {
LoaderManagerImpl.this.mActivity.mFragments.mNoTransactionsBecause = str;
}
this.mCallbacks = null;
this.mData = null;
this.mHaveData = false;
if (this.mLoader != null)
{
if (this.mListenerRegistered)
{
this.mListenerRegistered = false;
this.mLoader.unregisterListener(this);
}
this.mLoader.reset();
}
if (this.mPendingLoader != null) {
this.mPendingLoader.destroy();
}
return;
}
finally
{
if (LoaderManagerImpl.this.mActivity != null) {
LoaderManagerImpl.this.mActivity.mFragments.mNoTransactionsBecause = str;
}
}
}
public void dump(String paramString, FileDescriptor paramFileDescriptor, PrintWriter paramPrintWriter, String[] paramArrayOfString)
{
paramPrintWriter.print(paramString);
paramPrintWriter.print("mId=");
paramPrintWriter.print(this.mId);
paramPrintWriter.print(" mArgs=");
paramPrintWriter.println(this.mArgs);
paramPrintWriter.print(paramString);
paramPrintWriter.print("mCallbacks=");
paramPrintWriter.println(this.mCallbacks);
paramPrintWriter.print(paramString);
paramPrintWriter.print("mLoader=");
paramPrintWriter.println(this.mLoader);
if (this.mLoader != null) {
this.mLoader.dump(paramString + " ", paramFileDescriptor, paramPrintWriter, paramArrayOfString);
}
if ((this.mHaveData) || (this.mDeliveredData))
{
paramPrintWriter.print(paramString);
paramPrintWriter.print("mHaveData=");
paramPrintWriter.print(this.mHaveData);
paramPrintWriter.print(" mDeliveredData=");
paramPrintWriter.println(this.mDeliveredData);
paramPrintWriter.print(paramString);
paramPrintWriter.print("mData=");
paramPrintWriter.println(this.mData);
}
paramPrintWriter.print(paramString);
paramPrintWriter.print("mStarted=");
paramPrintWriter.print(this.mStarted);
paramPrintWriter.print(" mReportNextStart=");
paramPrintWriter.print(this.mReportNextStart);
paramPrintWriter.print(" mDestroyed=");
paramPrintWriter.println(this.mDestroyed);
paramPrintWriter.print(paramString);
paramPrintWriter.print("mRetaining=");
paramPrintWriter.print(this.mRetaining);
paramPrintWriter.print(" mRetainingStarted=");
paramPrintWriter.print(this.mRetainingStarted);
paramPrintWriter.print(" mListenerRegistered=");
paramPrintWriter.println(this.mListenerRegistered);
if (this.mPendingLoader != null)
{
paramPrintWriter.print(paramString);
paramPrintWriter.println("Pending Loader ");
paramPrintWriter.print(this.mPendingLoader);
paramPrintWriter.println(":");
this.mPendingLoader.dump(paramString + " ", paramFileDescriptor, paramPrintWriter, paramArrayOfString);
}
}
void finishRetain()
{
if (this.mRetaining)
{
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " Finished Retaining: " + this);
}
this.mRetaining = false;
if ((this.mStarted != this.mRetainingStarted) && (!this.mStarted)) {
stop();
}
}
if ((this.mStarted) && (this.mHaveData) && (!this.mReportNextStart)) {
callOnLoadFinished(this.mLoader, this.mData);
}
}
public void onLoadComplete(Loader<Object> paramLoader, Object paramObject)
{
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", "onLoadComplete: " + this);
}
if (this.mDestroyed) {
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " Ignoring load complete -- destroyed");
}
}
for (;;)
{
return;
if (LoaderManagerImpl.this.mLoaders.get(this.mId) != this)
{
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " Ignoring load complete -- not active");
}
}
else
{
LoaderInfo localLoaderInfo1 = this.mPendingLoader;
if (localLoaderInfo1 != null)
{
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " Switching to pending loader: " + localLoaderInfo1);
}
this.mPendingLoader = null;
LoaderManagerImpl.this.mLoaders.put(this.mId, null);
destroy();
LoaderManagerImpl.this.installLoader(localLoaderInfo1);
}
else
{
if ((this.mData != paramObject) || (!this.mHaveData))
{
this.mData = paramObject;
this.mHaveData = true;
if (this.mStarted) {
callOnLoadFinished(paramLoader, paramObject);
}
}
LoaderInfo localLoaderInfo2 = (LoaderInfo)LoaderManagerImpl.this.mInactiveLoaders.get(this.mId);
if ((localLoaderInfo2 != null) && (localLoaderInfo2 != this))
{
localLoaderInfo2.mDeliveredData = false;
localLoaderInfo2.destroy();
LoaderManagerImpl.this.mInactiveLoaders.remove(this.mId);
}
if ((LoaderManagerImpl.this.mActivity != null) && (!LoaderManagerImpl.this.hasRunningLoaders())) {
LoaderManagerImpl.this.mActivity.mFragments.startPendingDeferredFragments();
}
}
}
}
}
void reportStart()
{
if ((this.mStarted) && (this.mReportNextStart))
{
this.mReportNextStart = false;
if (this.mHaveData) {
callOnLoadFinished(this.mLoader, this.mData);
}
}
}
void retain()
{
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " Retaining: " + this);
}
this.mRetaining = true;
this.mRetainingStarted = this.mStarted;
this.mStarted = false;
this.mCallbacks = null;
}
void start()
{
if ((this.mRetaining) && (this.mRetainingStarted)) {
this.mStarted = true;
}
for (;;)
{
return;
if (!this.mStarted)
{
this.mStarted = true;
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " Starting: " + this);
}
if ((this.mLoader == null) && (this.mCallbacks != null)) {
this.mLoader = this.mCallbacks.onCreateLoader(this.mId, this.mArgs);
}
if (this.mLoader != null)
{
if ((this.mLoader.getClass().isMemberClass()) && (!Modifier.isStatic(this.mLoader.getClass().getModifiers()))) {
throw new IllegalArgumentException("Object returned from onCreateLoader must not be a non-static inner member class: " + this.mLoader);
}
if (!this.mListenerRegistered)
{
this.mLoader.registerListener(this.mId, this);
this.mListenerRegistered = true;
}
this.mLoader.startLoading();
}
}
}
}
void stop()
{
if (LoaderManagerImpl.DEBUG) {
Log.v("LoaderManager", " Stopping: " + this);
}
this.mStarted = false;
if ((!this.mRetaining) && (this.mLoader != null) && (this.mListenerRegistered))
{
this.mListenerRegistered = false;
this.mLoader.unregisterListener(this);
this.mLoader.stopLoading();
}
}
public String toString()
{
StringBuilder localStringBuilder = new StringBuilder(64);
localStringBuilder.append("LoaderInfo{");
localStringBuilder.append(Integer.toHexString(System.identityHashCode(this)));
localStringBuilder.append(" #");
localStringBuilder.append(this.mId);
localStringBuilder.append(" : ");
DebugUtils.buildShortClassTag(this.mLoader, localStringBuilder);
localStringBuilder.append("}}");
return localStringBuilder.toString();
}
}
}
/* Location: F:\neembuu\Research\android_apps\output_jar.jar
* Qualified Name: android.support.v4.app.LoaderManagerImpl
* JD-Core Version: 0.7.0.1
*/