2026-07-06 19:54:44 +08:00

254 lines
5.7 KiB
Smali

.class public Lcom/blankj/utilcode/util/DebouncingUtils;
.super Ljava/lang/Object;
.source "DebouncingUtils.java"
# static fields
.field private static final CACHE_SIZE:I = 0x40
.field private static final DEBOUNCING_DEFAULT_VALUE:J = 0x3e8L
.field private static final KEY_MILLIS_MAP:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/Long;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.locals 2
.line 23
new-instance v0, Ljava/util/concurrent/ConcurrentHashMap;
const/16 v1, 0x40
invoke-direct {v0, v1}, Ljava/util/concurrent/ConcurrentHashMap;-><init>(I)V
sput-object v0, Lcom/blankj/utilcode/util/DebouncingUtils;->KEY_MILLIS_MAP:Ljava/util/Map;
return-void
.end method
.method private constructor <init>()V
.locals 2
.line 26
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 27
new-instance v0, Ljava/lang/UnsupportedOperationException;
const-string v1, "u can\'t instantiate me..."
invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method private static clearIfNecessary(J)V
.locals 3
.line 76
sget-object v0, Lcom/blankj/utilcode/util/DebouncingUtils;->KEY_MILLIS_MAP:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result v1
const/16 v2, 0x40
if-ge v1, v2, :cond_0
return-void
.line 77
:cond_0
invoke-interface {v0}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v0
:cond_1
:goto_0
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_2
.line 78
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/util/Map$Entry;
.line 79
invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/Long;
.line 80
invoke-virtual {v1}, Ljava/lang/Long;->longValue()J
move-result-wide v1
cmp-long v1, p0, v1
if-ltz v1, :cond_1
.line 81
invoke-interface {v0}, Ljava/util/Iterator;->remove()V
goto :goto_0
:cond_2
return-void
.end method
.method public static isValid(Landroid/view/View;)Z
.locals 2
const-string v0, "Argument \'view\' of type View (#0 out of 1, zero-based) is marked by @android.support.annotation.NonNull but got null for it"
.line 36
invoke-static {p0, v0}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
const-wide/16 v0, 0x3e8
.line 37
invoke-static {p0, v0, v1}, Lcom/blankj/utilcode/util/DebouncingUtils;->isValid(Landroid/view/View;J)Z
move-result p0
return p0
.end method
.method public static isValid(Landroid/view/View;J)Z
.locals 1
const-string v0, "Argument \'view\' of type View (#0 out of 2, zero-based) is marked by @android.support.annotation.NonNull but got null for it"
.line 47
invoke-static {p0, v0}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
.line 48
invoke-virtual {p0}, Ljava/lang/Object;->hashCode()I
move-result p0
invoke-static {p0}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object p0
invoke-static {p0, p1, p2}, Lcom/blankj/utilcode/util/DebouncingUtils;->isValid(Ljava/lang/String;J)Z
move-result p0
return p0
.end method
.method public static isValid(Ljava/lang/String;J)Z
.locals 5
const-string v0, "Argument \'key\' of type String (#0 out of 2, zero-based) is marked by @android.support.annotation.NonNull but got null for it"
.line 58
invoke-static {p0, v0}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
.line 59
invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-nez v0, :cond_3
const-wide/16 v0, 0x0
cmp-long v0, p1, v0
if-ltz v0, :cond_2
.line 65
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v0
.line 66
invoke-static {v0, v1}, Lcom/blankj/utilcode/util/DebouncingUtils;->clearIfNecessary(J)V
.line 67
sget-object v2, Lcom/blankj/utilcode/util/DebouncingUtils;->KEY_MILLIS_MAP:Ljava/util/Map;
invoke-interface {v2, p0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/lang/Long;
if-eqz v3, :cond_1
.line 68
invoke-virtual {v3}, Ljava/lang/Long;->longValue()J
move-result-wide v3
cmp-long v3, v0, v3
if-ltz v3, :cond_0
goto :goto_0
:cond_0
const/4 p0, 0x0
return p0
:cond_1
:goto_0
add-long/2addr v0, p1
.line 69
invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object p1
invoke-interface {v2, p0, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const/4 p0, 0x1
return p0
.line 63
:cond_2
new-instance p0, Ljava/lang/IllegalArgumentException;
const-string p1, "The duration is less than 0."
invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p0
.line 60
:cond_3
new-instance p0, Ljava/lang/IllegalArgumentException;
const-string p1, "The key is null."
invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p0
.end method