jimu-decompiled/sources/com/youth/banner/WeakHandler.java
2025-05-13 19:24:51 +02:00

140 lines
4.0 KiB
Java

package com.youth.banner;
import android.os.Handler;
import android.os.Message;
import java.lang.ref.WeakReference;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/* loaded from: classes2.dex */
public class WeakHandler {
private Lock b = new ReentrantLock();
final ChainedRef c = new ChainedRef(this.b, null);
private final ExecHandler a = new ExecHandler();
private static class ExecHandler extends Handler {
private final WeakReference<Handler.Callback> a = null;
ExecHandler() {
}
@Override // android.os.Handler
public void handleMessage(Message message) {
Handler.Callback callback;
WeakReference<Handler.Callback> weakReference = this.a;
if (weakReference == null || (callback = weakReference.get()) == null) {
return;
}
callback.handleMessage(message);
}
}
static class WeakRunnable implements Runnable {
private final WeakReference<Runnable> a;
private final WeakReference<ChainedRef> b;
WeakRunnable(WeakReference<Runnable> weakReference, WeakReference<ChainedRef> weakReference2) {
this.a = weakReference;
this.b = weakReference2;
}
@Override // java.lang.Runnable
public void run() {
Runnable runnable = this.a.get();
ChainedRef chainedRef = this.b.get();
if (chainedRef != null) {
chainedRef.a();
}
if (runnable != null) {
runnable.run();
}
}
}
private WeakRunnable c(Runnable runnable) {
if (runnable == null) {
throw new NullPointerException("Runnable can't be null");
}
ChainedRef chainedRef = new ChainedRef(this.b, runnable);
this.c.a(chainedRef);
return chainedRef.d;
}
public final boolean a(Runnable runnable) {
return this.a.post(c(runnable));
}
public final void b(Runnable runnable) {
WeakRunnable a = this.c.a(runnable);
if (a != null) {
this.a.removeCallbacks(a);
}
}
public final boolean a(Runnable runnable, long j) {
return this.a.postDelayed(c(runnable), j);
}
static class ChainedRef {
ChainedRef a;
ChainedRef b;
final Runnable c;
final WeakRunnable d;
Lock e;
public ChainedRef(Lock lock, Runnable runnable) {
this.c = runnable;
this.e = lock;
this.d = new WeakRunnable(new WeakReference(runnable), new WeakReference(this));
}
public WeakRunnable a() {
this.e.lock();
try {
if (this.b != null) {
this.b.a = this.a;
}
if (this.a != null) {
this.a.b = this.b;
}
this.b = null;
this.a = null;
this.e.unlock();
return this.d;
} catch (Throwable th) {
this.e.unlock();
throw th;
}
}
public void a(ChainedRef chainedRef) {
this.e.lock();
try {
if (this.a != null) {
this.a.b = chainedRef;
}
chainedRef.a = this.a;
this.a = chainedRef;
chainedRef.b = this;
} finally {
this.e.unlock();
}
}
public WeakRunnable a(Runnable runnable) {
this.e.lock();
try {
for (ChainedRef chainedRef = this.a; chainedRef != null; chainedRef = chainedRef.a) {
if (chainedRef.c == runnable) {
return chainedRef.a();
}
}
this.e.unlock();
return null;
} finally {
this.e.unlock();
}
}
}
}