240 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.loader.content;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.database.ContentObserver;
 | |
| import android.os.Handler;
 | |
| import androidx.core.util.DebugUtils;
 | |
| import java.io.FileDescriptor;
 | |
| import java.io.PrintWriter;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class Loader<D> {
 | |
|     Context mContext;
 | |
|     int mId;
 | |
|     OnLoadCompleteListener<D> mListener;
 | |
|     OnLoadCanceledListener<D> mOnLoadCanceledListener;
 | |
|     boolean mStarted = false;
 | |
|     boolean mAbandoned = false;
 | |
|     boolean mReset = true;
 | |
|     boolean mContentChanged = false;
 | |
|     boolean mProcessingChange = false;
 | |
| 
 | |
|     public interface OnLoadCanceledListener<D> {
 | |
|         void onLoadCanceled(Loader<D> loader);
 | |
|     }
 | |
| 
 | |
|     public interface OnLoadCompleteListener<D> {
 | |
|         void onLoadComplete(Loader<D> loader, D d);
 | |
|     }
 | |
| 
 | |
|     public void commitContentChanged() {
 | |
|         this.mProcessingChange = false;
 | |
|     }
 | |
| 
 | |
|     public Context getContext() {
 | |
|         return this.mContext;
 | |
|     }
 | |
| 
 | |
|     public int getId() {
 | |
|         return this.mId;
 | |
|     }
 | |
| 
 | |
|     public boolean isAbandoned() {
 | |
|         return this.mAbandoned;
 | |
|     }
 | |
| 
 | |
|     public boolean isReset() {
 | |
|         return this.mReset;
 | |
|     }
 | |
| 
 | |
|     public boolean isStarted() {
 | |
|         return this.mStarted;
 | |
|     }
 | |
| 
 | |
|     protected void onAbandon() {
 | |
|     }
 | |
| 
 | |
|     protected boolean onCancelLoad() {
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     protected void onForceLoad() {
 | |
|     }
 | |
| 
 | |
|     protected void onReset() {
 | |
|     }
 | |
| 
 | |
|     protected void onStartLoading() {
 | |
|     }
 | |
| 
 | |
|     protected void onStopLoading() {
 | |
|     }
 | |
| 
 | |
|     public boolean takeContentChanged() {
 | |
|         boolean z = this.mContentChanged;
 | |
|         this.mContentChanged = false;
 | |
|         this.mProcessingChange |= z;
 | |
|         return z;
 | |
|     }
 | |
| 
 | |
|     public final class ForceLoadContentObserver extends ContentObserver {
 | |
|         @Override // android.database.ContentObserver
 | |
|         public boolean deliverSelfNotifications() {
 | |
|             return true;
 | |
|         }
 | |
| 
 | |
|         public ForceLoadContentObserver() {
 | |
|             super(new Handler());
 | |
|         }
 | |
| 
 | |
|         @Override // android.database.ContentObserver
 | |
|         public void onChange(boolean z) {
 | |
|             Loader.this.onContentChanged();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public Loader(Context context) {
 | |
|         this.mContext = context.getApplicationContext();
 | |
|     }
 | |
| 
 | |
|     public void deliverResult(D d) {
 | |
|         OnLoadCompleteListener<D> onLoadCompleteListener = this.mListener;
 | |
|         if (onLoadCompleteListener != null) {
 | |
|             onLoadCompleteListener.onLoadComplete(this, d);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void deliverCancellation() {
 | |
|         OnLoadCanceledListener<D> onLoadCanceledListener = this.mOnLoadCanceledListener;
 | |
|         if (onLoadCanceledListener != null) {
 | |
|             onLoadCanceledListener.onLoadCanceled(this);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void registerListener(int i, OnLoadCompleteListener<D> onLoadCompleteListener) {
 | |
|         if (this.mListener != null) {
 | |
|             throw new IllegalStateException("There is already a listener registered");
 | |
|         }
 | |
|         this.mListener = onLoadCompleteListener;
 | |
|         this.mId = i;
 | |
|     }
 | |
| 
 | |
|     public void unregisterListener(OnLoadCompleteListener<D> onLoadCompleteListener) {
 | |
|         OnLoadCompleteListener<D> onLoadCompleteListener2 = this.mListener;
 | |
|         if (onLoadCompleteListener2 == null) {
 | |
|             throw new IllegalStateException("No listener register");
 | |
|         }
 | |
|         if (onLoadCompleteListener2 != onLoadCompleteListener) {
 | |
|             throw new IllegalArgumentException("Attempting to unregister the wrong listener");
 | |
|         }
 | |
|         this.mListener = null;
 | |
|     }
 | |
| 
 | |
|     public void registerOnLoadCanceledListener(OnLoadCanceledListener<D> onLoadCanceledListener) {
 | |
|         if (this.mOnLoadCanceledListener != null) {
 | |
|             throw new IllegalStateException("There is already a listener registered");
 | |
|         }
 | |
|         this.mOnLoadCanceledListener = onLoadCanceledListener;
 | |
|     }
 | |
| 
 | |
|     public void unregisterOnLoadCanceledListener(OnLoadCanceledListener<D> onLoadCanceledListener) {
 | |
|         OnLoadCanceledListener<D> onLoadCanceledListener2 = this.mOnLoadCanceledListener;
 | |
|         if (onLoadCanceledListener2 == null) {
 | |
|             throw new IllegalStateException("No listener register");
 | |
|         }
 | |
|         if (onLoadCanceledListener2 != onLoadCanceledListener) {
 | |
|             throw new IllegalArgumentException("Attempting to unregister the wrong listener");
 | |
|         }
 | |
|         this.mOnLoadCanceledListener = null;
 | |
|     }
 | |
| 
 | |
|     public final void startLoading() {
 | |
|         this.mStarted = true;
 | |
|         this.mReset = false;
 | |
|         this.mAbandoned = false;
 | |
|         onStartLoading();
 | |
|     }
 | |
| 
 | |
|     public boolean cancelLoad() {
 | |
|         return onCancelLoad();
 | |
|     }
 | |
| 
 | |
|     public void forceLoad() {
 | |
|         onForceLoad();
 | |
|     }
 | |
| 
 | |
|     public void stopLoading() {
 | |
|         this.mStarted = false;
 | |
|         onStopLoading();
 | |
|     }
 | |
| 
 | |
|     public void abandon() {
 | |
|         this.mAbandoned = true;
 | |
|         onAbandon();
 | |
|     }
 | |
| 
 | |
|     public void reset() {
 | |
|         onReset();
 | |
|         this.mReset = true;
 | |
|         this.mStarted = false;
 | |
|         this.mAbandoned = false;
 | |
|         this.mContentChanged = false;
 | |
|         this.mProcessingChange = false;
 | |
|     }
 | |
| 
 | |
|     public void rollbackContentChanged() {
 | |
|         if (this.mProcessingChange) {
 | |
|             onContentChanged();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void onContentChanged() {
 | |
|         if (this.mStarted) {
 | |
|             forceLoad();
 | |
|         } else {
 | |
|             this.mContentChanged = true;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public String dataToString(D d) {
 | |
|         StringBuilder sb = new StringBuilder(64);
 | |
|         DebugUtils.buildShortClassTag(d, sb);
 | |
|         sb.append("}");
 | |
|         return sb.toString();
 | |
|     }
 | |
| 
 | |
|     public String toString() {
 | |
|         StringBuilder sb = new StringBuilder(64);
 | |
|         DebugUtils.buildShortClassTag(this, sb);
 | |
|         sb.append(" id=");
 | |
|         sb.append(this.mId);
 | |
|         sb.append("}");
 | |
|         return sb.toString();
 | |
|     }
 | |
| 
 | |
|     @Deprecated
 | |
|     public void dump(String str, FileDescriptor fileDescriptor, PrintWriter printWriter, String[] strArr) {
 | |
|         printWriter.print(str);
 | |
|         printWriter.print("mId=");
 | |
|         printWriter.print(this.mId);
 | |
|         printWriter.print(" mListener=");
 | |
|         printWriter.println(this.mListener);
 | |
|         if (this.mStarted || this.mContentChanged || this.mProcessingChange) {
 | |
|             printWriter.print(str);
 | |
|             printWriter.print("mStarted=");
 | |
|             printWriter.print(this.mStarted);
 | |
|             printWriter.print(" mContentChanged=");
 | |
|             printWriter.print(this.mContentChanged);
 | |
|             printWriter.print(" mProcessingChange=");
 | |
|             printWriter.println(this.mProcessingChange);
 | |
|         }
 | |
|         if (this.mAbandoned || this.mReset) {
 | |
|             printWriter.print(str);
 | |
|             printWriter.print("mAbandoned=");
 | |
|             printWriter.print(this.mAbandoned);
 | |
|             printWriter.print(" mReset=");
 | |
|             printWriter.println(this.mReset);
 | |
|         }
 | |
|     }
 | |
| }
 |