ThreadUtils$Task.smali
.class public abstract Lcom/blankj/utilcode/util/ThreadUtils$Task;
.super Ljava/lang/Object;
.source "ThreadUtils.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/blankj/utilcode/util/ThreadUtils;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x409
name = "Task"
.end annotation
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/blankj/utilcode/util/ThreadUtils$Task$OnTimeoutListener;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Ljava/lang/Object;",
"Ljava/lang/Runnable;"
}
.end annotation
# static fields
.field private static final CANCELLED:I
.field private static final COMPLETING:I
.field private static final EXCEPTIONAL:I
.field private static final INTERRUPTED:I
.field private static final NEW:I
.field private static final RUNNING:I
.field private static final TIMEOUT:I
# instance fields
.field private deliver:Ljava/util/concurrent/Executor;
.field private volatile isSchedule:Z
.field private mTimer:Ljava/util/Timer;
.field private volatile runner:Ljava/lang/Thread;
.field private final state:Ljava/util/concurrent/atomic/AtomicInteger;
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x156b
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->CANCELLED:I
const v0, 0x156c
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->COMPLETING:I
const v0, 0x156d
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->EXCEPTIONAL:I
const v0, 0x156a
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->INTERRUPTED:I
const v0, 0x156f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->NEW:I
const v0, 0x156e
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->RUNNING:I
const v0, 0x1569
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->TIMEOUT:I
return-void
.end method
.method public constructor <init>()V
.registers 3
.line 1151
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 1161
new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;
const/4 v1, 0x0
invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>(I)V
iput-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
return-void
.end method
.method static synthetic access$300(Lcom/blankj/utilcode/util/ThreadUtils$Task;Z)V
.registers 2
.param p0, "x0" # Lcom/blankj/utilcode/util/ThreadUtils$Task;
.param p1, "x1" # Z
.line 1151
invoke-direct {p0, p1}, Lcom/blankj/utilcode/util/ThreadUtils$Task;->setSchedule(Z)V
return-void
.end method
.method static synthetic access$700(Lcom/blankj/utilcode/util/ThreadUtils$Task;)V
.registers 1
.param p0, "x0" # Lcom/blankj/utilcode/util/ThreadUtils$Task;
.line 1151
invoke-direct {p0}, Lcom/blankj/utilcode/util/ThreadUtils$Task;->timeout()V
return-void
.end method
.method private getDeliver()Ljava/util/concurrent/Executor;
.registers 2
.line 1292
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->deliver:Ljava/util/concurrent/Executor;
if-nez v0, :cond_9
.line 1293
# invokes: Lcom/blankj/utilcode/util/ThreadUtils;->getGlobalDeliver()Ljava/util/concurrent/Executor;
invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$800()Ljava/util/concurrent/Executor;
move-result-object v0
return-object v0
.line 1295
:cond_9
return-object v0
.end method
.method private setSchedule(Z)V
.registers 2
.param p1, "isSchedule" # Z
.line 1288
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
iput-boolean p1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->isSchedule:Z
.line 1289
return-void
.end method
.method private timeout()V
.registers 4
.line 1250
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
monitor-enter v0
.line 1251
:try_start_3
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v1}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I
move-result v1
const/4 v2, 0x1
if-le v1, v2, :cond_e
monitor-exit v0
return-void
.line 1252
:cond_e
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
const/4 v2, 0x6
invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicInteger;->set(I)V
.line 1253
monitor-exit v0
:try_end_15
.catchall {:try_start_3 .. :try_end_15} :catchall_22
.line 1254
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->runner:Ljava/lang/Thread;
if-eqz v0, :cond_1e
.line 1255
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->runner:Ljava/lang/Thread;
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
.line 1257
:cond_1e
invoke-virtual {p0}, Lcom/blankj/utilcode/util/ThreadUtils$Task;->onDone()V
.line 1258
return-void
.line 1253
:catchall_22
move-exception v1
:try_start_23
monitor-exit v0
:try_end_24
.catchall {:try_start_23 .. :try_end_24} :catchall_22
throw v1
.end method
# virtual methods
.method public cancel()V
.registers 2
.line 1226
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
const/4 v0, 0x1
invoke-virtual {p0, v0}, Lcom/blankj/utilcode/util/ThreadUtils$Task;->cancel(Z)V
.line 1227
return-void
.end method
.method public cancel(Z)V
.registers 5
.param p1, "mayInterruptIfRunning" # Z
.line 1230
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
monitor-enter v0
.line 1231
:try_start_3
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v1}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I
move-result v1
const/4 v2, 0x1
if-le v1, v2, :cond_e
monitor-exit v0
return-void
.line 1232
:cond_e
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
const/4 v2, 0x4
invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicInteger;->set(I)V
.line 1233
monitor-exit v0
:try_end_15
.catchall {:try_start_3 .. :try_end_15} :catchall_2d
.line 1234
if-eqz p1, :cond_20
.line 1235
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->runner:Ljava/lang/Thread;
if-eqz v0, :cond_20
.line 1236
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->runner:Ljava/lang/Thread;
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
.line 1240
:cond_20
invoke-direct {p0}, Lcom/blankj/utilcode/util/ThreadUtils$Task;->getDeliver()Ljava/util/concurrent/Executor;
move-result-object v0
new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$Task$4;
invoke-direct {v1, p0}, Lcom/blankj/utilcode/util/ThreadUtils$Task$4;-><init>(Lcom/blankj/utilcode/util/ThreadUtils$Task;)V
invoke-interface {v0, v1}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
.line 1247
return-void
.line 1233
:catchall_2d
move-exception v1
:try_start_2e
monitor-exit v0
:try_end_2f
.catchall {:try_start_2e .. :try_end_2f} :catchall_2d
throw v1
.end method
.method public abstract doInBackground()Ljava/lang/Object;
.annotation system Ldalvik/annotation/Signature;
value = {
"()TT;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Throwable;
}
.end annotation
.end method
.method public isCanceled()Z
.registers 3
.line 1262
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I
move-result v0
const/4 v1, 0x4
if-lt v0, v1, :cond_b
const/4 v0, 0x1
goto :goto_c
:cond_b
const/4 v0, 0x0
:goto_c
return v0
.end method
.method public isDone()Z
.registers 3
.line 1266
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I
move-result v0
const/4 v1, 0x1
if-le v0, v1, :cond_a
goto :goto_b
:cond_a
const/4 v1, 0x0
:goto_b
return v1
.end method
.method public abstract onCancel()V
.end method
.method protected onDone()V
.registers 2
.line 1300
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
# getter for: Lcom/blankj/utilcode/util/ThreadUtils;->TASK_TASKINFO_MAP:Ljava/util/Map;
invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$900()Ljava/util/Map;
move-result-object v0
invoke-interface {v0, p0}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 1301
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->mTimer:Ljava/util/Timer;
if-eqz v0, :cond_11
.line 1302
invoke-virtual {v0}, Ljava/util/Timer;->cancel()V
.line 1303
const/4 v0, 0x0
iput-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->mTimer:Ljava/util/Timer;
.line 1305
:cond_11
return-void
.end method
.method public abstract onFail(Ljava/lang/Throwable;)V
.end method
.method public abstract onSuccess(Ljava/lang/Object;)V
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)V"
}
.end annotation
.end method
.method public run()V
.registers 5
.line 1180
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
iget-boolean v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->isSchedule:Z
const/4 v1, 0x0
const/4 v2, 0x1
if-eqz v0, :cond_23
.line 1181
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->runner:Ljava/lang/Thread;
if-nez v0, :cond_1a
.line 1182
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z
move-result v0
if-nez v0, :cond_13
return-void
.line 1183
:cond_13
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
iput-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->runner:Ljava/lang/Thread;
goto :goto_32
.line 1185
:cond_1a
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I
move-result v0
if-eq v0, v2, :cond_32
return-void
.line 1188
:cond_23
iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z
move-result v0
if-nez v0, :cond_2c
return-void
.line 1189
:cond_2c
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
iput-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->runner:Ljava/lang/Thread;
.line 1192
:cond_32
:goto_32
:try_start_32
invoke-virtual {p0}, Lcom/blankj/utilcode/util/ThreadUtils$Task;->doInBackground()Ljava/lang/Object;
move-result-object v0
.line 1193
.local v0, "result":Ljava/lang/Object;, "TT;"
iget-boolean v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->isSchedule:Z
if-eqz v1, :cond_50
.line 1194
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v1}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I
move-result v1
if-eq v1, v2, :cond_43
return-void
.line 1195
:cond_43
invoke-direct {p0}, Lcom/blankj/utilcode/util/ThreadUtils$Task;->getDeliver()Ljava/util/concurrent/Executor;
move-result-object v1
new-instance v3, Lcom/blankj/utilcode/util/ThreadUtils$Task$1;
invoke-direct {v3, p0, v0}, Lcom/blankj/utilcode/util/ThreadUtils$Task$1;-><init>(Lcom/blankj/utilcode/util/ThreadUtils$Task;Ljava/lang/Object;)V
invoke-interface {v1, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_87
.line 1202
:cond_50
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
const/4 v3, 0x3
invoke-virtual {v1, v2, v3}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z
move-result v1
if-nez v1, :cond_5a
return-void
.line 1203
:cond_5a
invoke-direct {p0}, Lcom/blankj/utilcode/util/ThreadUtils$Task;->getDeliver()Ljava/util/concurrent/Executor;
move-result-object v1
new-instance v3, Lcom/blankj/utilcode/util/ThreadUtils$Task$2;
invoke-direct {v3, p0, v0}, Lcom/blankj/utilcode/util/ThreadUtils$Task$2;-><init>(Lcom/blankj/utilcode/util/ThreadUtils$Task;Ljava/lang/Object;)V
invoke-interface {v1, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
:try_end_66
.catch Ljava/lang/InterruptedException; {:try_start_32 .. :try_end_66} :catch_7f
.catchall {:try_start_32 .. :try_end_66} :catchall_67
goto :goto_87
.line 1213
.end local v0 # "result":Ljava/lang/Object;, "TT;"
:catchall_67
move-exception v0
.line 1214
.local v0, "throwable":Ljava/lang/Throwable;
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
const/4 v3, 0x2
invoke-virtual {v1, v2, v3}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z
move-result v1
if-nez v1, :cond_72
return-void
.line 1215
:cond_72
invoke-direct {p0}, Lcom/blankj/utilcode/util/ThreadUtils$Task;->getDeliver()Ljava/util/concurrent/Executor;
move-result-object v1
new-instance v2, Lcom/blankj/utilcode/util/ThreadUtils$Task$3;
invoke-direct {v2, p0, v0}, Lcom/blankj/utilcode/util/ThreadUtils$Task$3;-><init>(Lcom/blankj/utilcode/util/ThreadUtils$Task;Ljava/lang/Throwable;)V
invoke-interface {v1, v2}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_88
.line 1211
.end local v0 # "throwable":Ljava/lang/Throwable;
:catch_7f
move-exception v0
.line 1212
.local v0, "ignore":Ljava/lang/InterruptedException;
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->state:Ljava/util/concurrent/atomic/AtomicInteger;
const/4 v2, 0x4
const/4 v3, 0x5
invoke-virtual {v1, v2, v3}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z
.line 1222
.end local v0 # "ignore":Ljava/lang/InterruptedException;
:goto_87
nop
.line 1223
:goto_88
return-void
.end method
.method public setDeliver(Ljava/util/concurrent/Executor;)Lcom/blankj/utilcode/util/ThreadUtils$Task;
.registers 2
.param p1, "deliver" # Ljava/util/concurrent/Executor;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/concurrent/Executor;",
")",
"Lcom/blankj/utilcode/util/ThreadUtils$Task<",
"TT;>;"
}
.end annotation
.line 1270
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
iput-object p1, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->deliver:Ljava/util/concurrent/Executor;
.line 1271
return-object p0
.end method
.method public setTimeout(JLcom/blankj/utilcode/util/ThreadUtils$Task$OnTimeoutListener;)V
.registers 6
.param p1, "timeoutMillis" # J
.param p3, "listener" # Lcom/blankj/utilcode/util/ThreadUtils$Task$OnTimeoutListener;
.line 1275
.local p0, "this":Lcom/blankj/utilcode/util/ThreadUtils$Task;, "Lcom/blankj/utilcode/util/ThreadUtils$Task<TT;>;"
new-instance v0, Ljava/util/Timer;
invoke-direct {v0}, Ljava/util/Timer;-><init>()V
iput-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$Task;->mTimer:Ljava/util/Timer;
.line 1276
new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$Task$5;
invoke-direct {v1, p0, p3}, Lcom/blankj/utilcode/util/ThreadUtils$Task$5;-><init>(Lcom/blankj/utilcode/util/ThreadUtils$Task;Lcom/blankj/utilcode/util/ThreadUtils$Task$OnTimeoutListener;)V
invoke-virtual {v0, v1, p1, p2}, Ljava/util/Timer;->schedule(Ljava/util/TimerTask;J)V
.line 1285
return-void
.end method