ADD week 5
This commit is contained in:
		
							
								
								
									
										89
									
								
								02-Easy5/E5/sources/androidx/lifecycle/DispatchQueue.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								02-Easy5/E5/sources/androidx/lifecycle/DispatchQueue.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| package androidx.lifecycle; | ||||
|  | ||||
| import java.util.ArrayDeque; | ||||
| import java.util.Queue; | ||||
| import kotlin.Metadata; | ||||
| import kotlin.coroutines.CoroutineContext; | ||||
| import kotlin.jvm.internal.Intrinsics; | ||||
| import kotlinx.coroutines.Dispatchers; | ||||
| import kotlinx.coroutines.MainCoroutineDispatcher; | ||||
|  | ||||
| /* compiled from: DispatchQueue.kt */ | ||||
| @Metadata(d1 = {"\u0000.\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0007\b\u0000\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\b\u0010\n\u001a\u00020\u0004H\u0007J\u0018\u0010\u000b\u001a\u00020\f2\u0006\u0010\r\u001a\u00020\u000e2\u0006\u0010\u000f\u001a\u00020\tH\u0007J\b\u0010\u0010\u001a\u00020\fH\u0007J\u0010\u0010\u0011\u001a\u00020\f2\u0006\u0010\u000f\u001a\u00020\tH\u0003J\b\u0010\u0012\u001a\u00020\fH\u0007J\b\u0010\u0013\u001a\u00020\fH\u0007J\b\u0010\u0014\u001a\u00020\fH\u0007R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0005\u001a\u00020\u0004X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0006\u001a\u00020\u0004X\u0082\u000e¢\u0006\u0002\n\u0000R\u0014\u0010\u0007\u001a\b\u0012\u0004\u0012\u00020\t0\bX\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\u0015"}, d2 = {"Landroidx/lifecycle/DispatchQueue;", "", "()V", "finished", "", "isDraining", "paused", "queue", "Ljava/util/Queue;", "Ljava/lang/Runnable;", "canRun", "dispatchAndEnqueue", "", "context", "Lkotlin/coroutines/CoroutineContext;", "runnable", "drainQueue", "enqueue", "finish", "pause", "resume", "lifecycle-common"}, k = 1, mv = {1, 8, 0}, xi = 48) | ||||
| /* loaded from: classes.dex */ | ||||
| public final class DispatchQueue { | ||||
|     private boolean finished; | ||||
|     private boolean isDraining; | ||||
|     private boolean paused = true; | ||||
|     private final Queue<Runnable> queue = new ArrayDeque(); | ||||
|  | ||||
|     public final boolean canRun() { | ||||
|         return this.finished || !this.paused; | ||||
|     } | ||||
|  | ||||
|     public final void pause() { | ||||
|         this.paused = true; | ||||
|     } | ||||
|  | ||||
|     public final void resume() { | ||||
|         if (this.paused) { | ||||
|             if (!(!this.finished)) { | ||||
|                 throw new IllegalStateException("Cannot resume a finished dispatcher".toString()); | ||||
|             } | ||||
|             this.paused = false; | ||||
|             drainQueue(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public final void finish() { | ||||
|         this.finished = true; | ||||
|         drainQueue(); | ||||
|     } | ||||
|  | ||||
|     public final void drainQueue() { | ||||
|         if (this.isDraining) { | ||||
|             return; | ||||
|         } | ||||
|         try { | ||||
|             this.isDraining = true; | ||||
|             while ((!this.queue.isEmpty()) && canRun()) { | ||||
|                 Runnable poll = this.queue.poll(); | ||||
|                 if (poll != null) { | ||||
|                     poll.run(); | ||||
|                 } | ||||
|             } | ||||
|         } finally { | ||||
|             this.isDraining = false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public final void dispatchAndEnqueue(CoroutineContext context, final Runnable runnable) { | ||||
|         Intrinsics.checkNotNullParameter(context, "context"); | ||||
|         Intrinsics.checkNotNullParameter(runnable, "runnable"); | ||||
|         MainCoroutineDispatcher immediate = Dispatchers.getMain().getImmediate(); | ||||
|         if (immediate.isDispatchNeeded(context) || canRun()) { | ||||
|             immediate.mo1907dispatch(context, new Runnable() { // from class: androidx.lifecycle.DispatchQueue$$ExternalSyntheticLambda0 | ||||
|                 @Override // java.lang.Runnable | ||||
|                 public final void run() { | ||||
|                     DispatchQueue.dispatchAndEnqueue$lambda$2$lambda$1(DispatchQueue.this, runnable); | ||||
|                 } | ||||
|             }); | ||||
|         } else { | ||||
|             enqueue(runnable); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /* JADX INFO: Access modifiers changed from: private */ | ||||
|     public static final void dispatchAndEnqueue$lambda$2$lambda$1(DispatchQueue this$0, Runnable runnable) { | ||||
|         Intrinsics.checkNotNullParameter(this$0, "this$0"); | ||||
|         Intrinsics.checkNotNullParameter(runnable, "$runnable"); | ||||
|         this$0.enqueue(runnable); | ||||
|     } | ||||
|  | ||||
|     private final void enqueue(Runnable runnable) { | ||||
|         if (!this.queue.offer(runnable)) { | ||||
|             throw new IllegalStateException("cannot enqueue any more runnables".toString()); | ||||
|         } | ||||
|         drainQueue(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user