mirror of
https://github.com/VibedByKaKi/alexandroid.git
synced 2026-11-13 17:37:16 +01:00
432 lines
15 KiB
Java
432 lines
15 KiB
Java
package com.bumptech.glide;
|
|
|
|
import android.content.ComponentCallbacks2;
|
|
import android.content.Context;
|
|
import android.content.res.Configuration;
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.net.Uri;
|
|
import android.view.View;
|
|
import androidx.annotation.CheckResult;
|
|
import androidx.annotation.DrawableRes;
|
|
import androidx.annotation.GuardedBy;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.annotation.RawRes;
|
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
|
import com.bumptech.glide.load.resource.gif.GifDrawable;
|
|
import com.bumptech.glide.manager.ConnectivityMonitor;
|
|
import com.bumptech.glide.manager.ConnectivityMonitorFactory;
|
|
import com.bumptech.glide.manager.Lifecycle;
|
|
import com.bumptech.glide.manager.LifecycleListener;
|
|
import com.bumptech.glide.manager.RequestManagerTreeNode;
|
|
import com.bumptech.glide.manager.RequestTracker;
|
|
import com.bumptech.glide.manager.TargetTracker;
|
|
import com.bumptech.glide.request.BaseRequestOptions;
|
|
import com.bumptech.glide.request.Request;
|
|
import com.bumptech.glide.request.RequestListener;
|
|
import com.bumptech.glide.request.RequestOptions;
|
|
import com.bumptech.glide.request.target.CustomViewTarget;
|
|
import com.bumptech.glide.request.target.Target;
|
|
import com.bumptech.glide.request.transition.Transition;
|
|
import com.bumptech.glide.util.Util;
|
|
import java.io.File;
|
|
import java.net.URL;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.concurrent.CopyOnWriteArrayList;
|
|
import org.apache.commons.text.StringSubstitutor;
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
/* loaded from: classes6.dex */
|
|
public class RequestManager implements ComponentCallbacks2, LifecycleListener, ModelTypes<RequestBuilder<Drawable>> {
|
|
private static final RequestOptions DECODE_TYPE_BITMAP = RequestOptions.decodeTypeOf(Bitmap.class).lock();
|
|
private static final RequestOptions DECODE_TYPE_GIF = RequestOptions.decodeTypeOf(GifDrawable.class).lock();
|
|
private static final RequestOptions DOWNLOAD_ONLY_OPTIONS = RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.DATA).priority(Priority.LOW).skipMemoryCache(true);
|
|
private final Runnable addSelfToLifecycle;
|
|
private boolean clearOnStop;
|
|
private final ConnectivityMonitor connectivityMonitor;
|
|
protected final Context context;
|
|
private final CopyOnWriteArrayList<RequestListener<Object>> defaultRequestListeners;
|
|
protected final Glide glide;
|
|
final Lifecycle lifecycle;
|
|
private boolean pauseAllRequestsOnTrimMemoryModerate;
|
|
|
|
@GuardedBy("this")
|
|
private RequestOptions requestOptions;
|
|
|
|
@GuardedBy("this")
|
|
private final RequestTracker requestTracker;
|
|
|
|
@GuardedBy("this")
|
|
private final TargetTracker targetTracker;
|
|
|
|
@GuardedBy("this")
|
|
private final RequestManagerTreeNode treeNode;
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
public class RequestManagerConnectivityListener implements ConnectivityMonitor.ConnectivityListener {
|
|
|
|
@GuardedBy("RequestManager.this")
|
|
private final RequestTracker requestTracker;
|
|
|
|
public RequestManagerConnectivityListener(@NonNull RequestTracker requestTracker) {
|
|
this.requestTracker = requestTracker;
|
|
}
|
|
|
|
@Override // com.bumptech.glide.manager.ConnectivityMonitor.ConnectivityListener
|
|
public void onConnectivityChanged(boolean z) {
|
|
if (z) {
|
|
synchronized (RequestManager.this) {
|
|
this.requestTracker.restartRequests();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public RequestManager(Glide glide, Lifecycle lifecycle, RequestManagerTreeNode requestManagerTreeNode, RequestTracker requestTracker, ConnectivityMonitorFactory connectivityMonitorFactory, Context context) {
|
|
this.targetTracker = new TargetTracker();
|
|
Runnable runnable = new Runnable() { // from class: com.bumptech.glide.RequestManager.1
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
RequestManager requestManager = RequestManager.this;
|
|
requestManager.lifecycle.addListener(requestManager);
|
|
}
|
|
};
|
|
this.addSelfToLifecycle = runnable;
|
|
this.glide = glide;
|
|
this.lifecycle = lifecycle;
|
|
this.treeNode = requestManagerTreeNode;
|
|
this.requestTracker = requestTracker;
|
|
this.context = context;
|
|
ConnectivityMonitor build = connectivityMonitorFactory.build(context.getApplicationContext(), new RequestManagerConnectivityListener(requestTracker));
|
|
this.connectivityMonitor = build;
|
|
glide.registerRequestManager(this);
|
|
if (Util.isOnBackgroundThread()) {
|
|
Util.postOnUiThread(runnable);
|
|
} else {
|
|
lifecycle.addListener(this);
|
|
}
|
|
lifecycle.addListener(build);
|
|
this.defaultRequestListeners = new CopyOnWriteArrayList<>(glide.getGlideContext().getDefaultRequestListeners());
|
|
setRequestOptions(glide.getGlideContext().getDefaultRequestOptions());
|
|
}
|
|
|
|
private synchronized void clearRequests() {
|
|
try {
|
|
Iterator<Target<?>> it2 = this.targetTracker.getAll().iterator();
|
|
while (it2.hasNext()) {
|
|
clear(it2.next());
|
|
}
|
|
this.targetTracker.clear();
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
}
|
|
|
|
private void untrackOrDelegate(@NonNull Target<?> target) {
|
|
boolean untrack = untrack(target);
|
|
Request request = target.getRequest();
|
|
if (untrack || this.glide.removeFromManagers(target) || request == null) {
|
|
return;
|
|
}
|
|
target.setRequest(null);
|
|
request.clear();
|
|
}
|
|
|
|
private synchronized void updateRequestOptions(@NonNull RequestOptions requestOptions) {
|
|
this.requestOptions = this.requestOptions.apply(requestOptions);
|
|
}
|
|
|
|
public RequestManager addDefaultRequestListener(RequestListener<Object> requestListener) {
|
|
this.defaultRequestListeners.add(requestListener);
|
|
return this;
|
|
}
|
|
|
|
@NonNull
|
|
public synchronized RequestManager applyDefaultRequestOptions(@NonNull RequestOptions requestOptions) {
|
|
updateRequestOptions(requestOptions);
|
|
return this;
|
|
}
|
|
|
|
@NonNull
|
|
@CheckResult
|
|
public <ResourceType> RequestBuilder<ResourceType> as(@NonNull Class<ResourceType> cls) {
|
|
return new RequestBuilder<>(this.glide, this, cls, this.context);
|
|
}
|
|
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Bitmap> asBitmap() {
|
|
return as(Bitmap.class).apply((BaseRequestOptions<?>) DECODE_TYPE_BITMAP);
|
|
}
|
|
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Drawable> asDrawable() {
|
|
return as(Drawable.class);
|
|
}
|
|
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<File> asFile() {
|
|
return as(File.class).apply((BaseRequestOptions<?>) RequestOptions.skipMemoryCacheOf(true));
|
|
}
|
|
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<GifDrawable> asGif() {
|
|
return as(GifDrawable.class).apply((BaseRequestOptions<?>) DECODE_TYPE_GIF);
|
|
}
|
|
|
|
public void clear(@NonNull View view) {
|
|
clear(new ClearTarget(view));
|
|
}
|
|
|
|
@NonNull
|
|
public synchronized RequestManager clearOnStop() {
|
|
this.clearOnStop = true;
|
|
return this;
|
|
}
|
|
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<File> download(@Nullable Object obj) {
|
|
return downloadOnly().load(obj);
|
|
}
|
|
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<File> downloadOnly() {
|
|
return as(File.class).apply((BaseRequestOptions<?>) DOWNLOAD_ONLY_OPTIONS);
|
|
}
|
|
|
|
public List<RequestListener<Object>> getDefaultRequestListeners() {
|
|
return this.defaultRequestListeners;
|
|
}
|
|
|
|
public synchronized RequestOptions getDefaultRequestOptions() {
|
|
return this.requestOptions;
|
|
}
|
|
|
|
@NonNull
|
|
public <T> TransitionOptions<?, T> getDefaultTransitionOptions(Class<T> cls) {
|
|
return this.glide.getGlideContext().getDefaultTransitionOptions(cls);
|
|
}
|
|
|
|
public synchronized boolean isPaused() {
|
|
return this.requestTracker.isPaused();
|
|
}
|
|
|
|
@Override // com.bumptech.glide.ModelTypes
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Drawable> load(@Nullable Bitmap bitmap) {
|
|
return asDrawable().load(bitmap);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.manager.LifecycleListener
|
|
public synchronized void onDestroy() {
|
|
this.targetTracker.onDestroy();
|
|
clearRequests();
|
|
this.requestTracker.clearRequests();
|
|
this.lifecycle.removeListener(this);
|
|
this.lifecycle.removeListener(this.connectivityMonitor);
|
|
Util.removeCallbacksOnUiThread(this.addSelfToLifecycle);
|
|
this.glide.unregisterRequestManager(this);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.manager.LifecycleListener
|
|
public synchronized void onStart() {
|
|
resumeRequests();
|
|
this.targetTracker.onStart();
|
|
}
|
|
|
|
@Override // com.bumptech.glide.manager.LifecycleListener
|
|
public synchronized void onStop() {
|
|
try {
|
|
this.targetTracker.onStop();
|
|
if (this.clearOnStop) {
|
|
clearRequests();
|
|
} else {
|
|
pauseRequests();
|
|
}
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
}
|
|
|
|
@Override // android.content.ComponentCallbacks2
|
|
public void onTrimMemory(int i) {
|
|
if (i == 60 && this.pauseAllRequestsOnTrimMemoryModerate) {
|
|
pauseAllRequestsRecursive();
|
|
}
|
|
}
|
|
|
|
public synchronized void pauseAllRequests() {
|
|
this.requestTracker.pauseAllRequests();
|
|
}
|
|
|
|
public synchronized void pauseAllRequestsRecursive() {
|
|
pauseAllRequests();
|
|
Iterator<RequestManager> it2 = this.treeNode.getDescendants().iterator();
|
|
while (it2.hasNext()) {
|
|
it2.next().pauseAllRequests();
|
|
}
|
|
}
|
|
|
|
public synchronized void pauseRequests() {
|
|
this.requestTracker.pauseRequests();
|
|
}
|
|
|
|
public synchronized void pauseRequestsRecursive() {
|
|
pauseRequests();
|
|
Iterator<RequestManager> it2 = this.treeNode.getDescendants().iterator();
|
|
while (it2.hasNext()) {
|
|
it2.next().pauseRequests();
|
|
}
|
|
}
|
|
|
|
public synchronized void resumeRequests() {
|
|
this.requestTracker.resumeRequests();
|
|
}
|
|
|
|
public synchronized void resumeRequestsRecursive() {
|
|
Util.assertMainThread();
|
|
resumeRequests();
|
|
Iterator<RequestManager> it2 = this.treeNode.getDescendants().iterator();
|
|
while (it2.hasNext()) {
|
|
it2.next().resumeRequests();
|
|
}
|
|
}
|
|
|
|
@NonNull
|
|
public synchronized RequestManager setDefaultRequestOptions(@NonNull RequestOptions requestOptions) {
|
|
setRequestOptions(requestOptions);
|
|
return this;
|
|
}
|
|
|
|
public void setPauseAllRequestsOnTrimMemoryModerate(boolean z) {
|
|
this.pauseAllRequestsOnTrimMemoryModerate = z;
|
|
}
|
|
|
|
public synchronized void setRequestOptions(@NonNull RequestOptions requestOptions) {
|
|
this.requestOptions = requestOptions.mo16516clone().autoClone();
|
|
}
|
|
|
|
public synchronized String toString() {
|
|
return super.toString() + "{tracker=" + this.requestTracker + ", treeNode=" + this.treeNode + StringSubstitutor.DEFAULT_VAR_END;
|
|
}
|
|
|
|
public synchronized void track(@NonNull Target<?> target, @NonNull Request request) {
|
|
this.targetTracker.track(target);
|
|
this.requestTracker.runRequest(request);
|
|
}
|
|
|
|
public synchronized boolean untrack(@NonNull Target<?> target) {
|
|
Request request = target.getRequest();
|
|
if (request == null) {
|
|
return true;
|
|
}
|
|
if (!this.requestTracker.clearAndRemove(request)) {
|
|
return false;
|
|
}
|
|
this.targetTracker.untrack(target);
|
|
target.setRequest(null);
|
|
return true;
|
|
}
|
|
|
|
public void clear(@Nullable Target<?> target) {
|
|
if (target == null) {
|
|
return;
|
|
}
|
|
untrackOrDelegate(target);
|
|
}
|
|
|
|
@Override // android.content.ComponentCallbacks
|
|
public void onLowMemory() {
|
|
}
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
public static class ClearTarget extends CustomViewTarget<View, Object> {
|
|
public ClearTarget(@NonNull View view) {
|
|
super(view);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
public void onLoadFailed(@Nullable Drawable drawable) {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.CustomViewTarget
|
|
public void onResourceCleared(@Nullable Drawable drawable) {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
public void onResourceReady(@NonNull Object obj, @Nullable Transition<? super Object> transition) {
|
|
}
|
|
}
|
|
|
|
@Override // android.content.ComponentCallbacks
|
|
public void onConfigurationChanged(Configuration configuration) {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.ModelTypes
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Drawable> load(@Nullable Drawable drawable) {
|
|
return asDrawable().load(drawable);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.ModelTypes
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Drawable> load(@Nullable String str) {
|
|
return asDrawable().load(str);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.ModelTypes
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Drawable> load(@Nullable Uri uri) {
|
|
return asDrawable().load(uri);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.ModelTypes
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Drawable> load(@Nullable File file) {
|
|
return asDrawable().load(file);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.ModelTypes
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Drawable> load(@Nullable @DrawableRes @RawRes Integer num) {
|
|
return asDrawable().load(num);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.ModelTypes
|
|
@CheckResult
|
|
@Deprecated
|
|
public RequestBuilder<Drawable> load(@Nullable URL url) {
|
|
return asDrawable().load(url);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.ModelTypes
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Drawable> load(@Nullable byte[] bArr) {
|
|
return asDrawable().load(bArr);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.ModelTypes
|
|
@NonNull
|
|
@CheckResult
|
|
public RequestBuilder<Drawable> load(@Nullable Object obj) {
|
|
return asDrawable().load(obj);
|
|
}
|
|
|
|
public RequestManager(@NonNull Glide glide, @NonNull Lifecycle lifecycle, @NonNull RequestManagerTreeNode requestManagerTreeNode, @NonNull Context context) {
|
|
this(glide, lifecycle, requestManagerTreeNode, new RequestTracker(), glide.getConnectivityMonitorFactory(), context);
|
|
}
|
|
}
|