jimu-decompiled/sources/com/google/android/gms/common/images/ImageManager.java
2025-05-13 19:24:51 +02:00

182 lines
7.0 KiB
Java

package com.google.android.gms.common.images;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.ParcelFileDescriptor;
import android.os.ResultReceiver;
import android.os.SystemClock;
import android.util.Log;
import androidx.collection.LruCache;
import com.google.android.gms.common.annotation.KeepName;
import com.google.android.gms.common.internal.Asserts;
import com.google.android.gms.internal.base.zak;
import com.google.android.gms.internal.base.zal;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
/* loaded from: classes.dex */
public final class ImageManager {
private static final Object i = new Object();
private static HashSet<Uri> j = new HashSet<>();
private final Context a;
private final Handler b;
private final ExecutorService c;
private final zaa d;
private final zak e;
private final Map<com.google.android.gms.common.images.zaa, ImageReceiver> f;
private final Map<Uri, ImageReceiver> g;
private final Map<Uri, Long> h;
@KeepName
private final class ImageReceiver extends ResultReceiver {
private final Uri mUri;
private final ArrayList<com.google.android.gms.common.images.zaa> zamp;
ImageReceiver(Uri uri) {
super(new zal(Looper.getMainLooper()));
this.mUri = uri;
this.zamp = new ArrayList<>();
}
@Override // android.os.ResultReceiver
public final void onReceiveResult(int i, Bundle bundle) {
ImageManager.this.c.execute(ImageManager.this.new zab(this.mUri, (ParcelFileDescriptor) bundle.getParcelable("com.google.android.gms.extra.fileDescriptor")));
}
public final void zab(com.google.android.gms.common.images.zaa zaaVar) {
Asserts.a("ImageReceiver.addImageRequest() must be called in the main thread");
this.zamp.add(zaaVar);
}
public final void zac(com.google.android.gms.common.images.zaa zaaVar) {
Asserts.a("ImageReceiver.removeImageRequest() must be called in the main thread");
this.zamp.remove(zaaVar);
}
public final void zace() {
Intent intent = new Intent("com.google.android.gms.common.images.LOAD_IMAGE");
intent.putExtra("com.google.android.gms.extras.uri", this.mUri);
intent.putExtra("com.google.android.gms.extras.resultReceiver", this);
intent.putExtra("com.google.android.gms.extras.priority", 3);
ImageManager.this.a.sendBroadcast(intent);
}
}
private static final class zaa extends LruCache<com.google.android.gms.common.images.zab, Bitmap> {
}
private final class zab implements Runnable {
private final Uri a;
private final ParcelFileDescriptor b;
public zab(Uri uri, ParcelFileDescriptor parcelFileDescriptor) {
this.a = uri;
this.b = parcelFileDescriptor;
}
@Override // java.lang.Runnable
public final void run() {
boolean z;
Bitmap bitmap;
Asserts.b("LoadBitmapFromDiskRunnable can't be executed in the main thread");
ParcelFileDescriptor parcelFileDescriptor = this.b;
boolean z2 = false;
Bitmap bitmap2 = null;
if (parcelFileDescriptor != null) {
try {
bitmap2 = BitmapFactory.decodeFileDescriptor(parcelFileDescriptor.getFileDescriptor());
} catch (OutOfMemoryError e) {
String valueOf = String.valueOf(this.a);
StringBuilder sb = new StringBuilder(String.valueOf(valueOf).length() + 34);
sb.append("OOM while loading bitmap for uri: ");
sb.append(valueOf);
Log.e("ImageManager", sb.toString(), e);
z2 = true;
}
try {
this.b.close();
} catch (IOException e2) {
Log.e("ImageManager", "closed failed", e2);
}
z = z2;
bitmap = bitmap2;
} else {
bitmap = null;
z = false;
}
CountDownLatch countDownLatch = new CountDownLatch(1);
ImageManager.this.b.post(ImageManager.this.new zad(this.a, bitmap, z, countDownLatch));
try {
countDownLatch.await();
} catch (InterruptedException unused) {
String valueOf2 = String.valueOf(this.a);
StringBuilder sb2 = new StringBuilder(String.valueOf(valueOf2).length() + 32);
sb2.append("Latch interrupted while posting ");
sb2.append(valueOf2);
Log.w("ImageManager", sb2.toString());
}
}
}
private final class zad implements Runnable {
private final Uri a;
private final Bitmap b;
private final CountDownLatch c;
private boolean d;
public zad(Uri uri, Bitmap bitmap, boolean z, CountDownLatch countDownLatch) {
this.a = uri;
this.b = bitmap;
this.d = z;
this.c = countDownLatch;
}
@Override // java.lang.Runnable
public final void run() {
Asserts.a("OnBitmapLoadedRunnable must be executed in the main thread");
boolean z = this.b != null;
if (ImageManager.this.d != null) {
if (this.d) {
ImageManager.this.d.a();
System.gc();
this.d = false;
ImageManager.this.b.post(this);
return;
}
if (z) {
ImageManager.this.d.a(new com.google.android.gms.common.images.zab(this.a), this.b);
}
}
ImageReceiver imageReceiver = (ImageReceiver) ImageManager.this.g.remove(this.a);
if (imageReceiver != null) {
ArrayList arrayList = imageReceiver.zamp;
int size = arrayList.size();
for (int i = 0; i < size; i++) {
com.google.android.gms.common.images.zaa zaaVar = (com.google.android.gms.common.images.zaa) arrayList.get(i);
if (z) {
zaaVar.a(ImageManager.this.a, this.b, false);
} else {
ImageManager.this.h.put(this.a, Long.valueOf(SystemClock.elapsedRealtime()));
zaaVar.a(ImageManager.this.a, ImageManager.this.e, false);
}
ImageManager.this.f.remove(zaaVar);
}
}
this.c.countDown();
synchronized (ImageManager.i) {
ImageManager.j.remove(this.a);
}
}
}
}