ThreadPoolTaskBus.smali
.class public Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;
.super Lcom/cleanmaster/junk/scan/TaskBus;
.source "ThreadPoolTaskBus.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$ExecTaskInfo;,
Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$MyThreadFactory;,
Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$MyTaskCallable;,
Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$TaskCtrlTimeoutImpl;
}
.end annotation
# static fields
.field private static final TAG:Ljava/lang/String; = "TPTB"
# instance fields
.field private finishedScan:Ljava/util/concurrent/CountDownLatch;
.field private firstTaskInfo:Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;
.field private mOtherTaskTimeDelay:I
.field private mThreadNum:I
.field private taskExecs:Ljava/util/concurrent/ExecutorService;
# direct methods
.method public constructor <init>(I)V
.registers 3
.prologue
.line 38
invoke-direct {p0}, Lcom/cleanmaster/junk/scan/TaskBus;-><init>()V
.line 39
iput p1, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->mThreadNum:I
.line 40
const/4 v0, 0x0
iput v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->mOtherTaskTimeDelay:I
.line 41
const/4 v0, 0x0
iput-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->firstTaskInfo:Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;
.line 42
return-void
.end method
.method static synthetic access$000(Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;)Ljava/util/concurrent/CountDownLatch;
.registers 2
.prologue
.line 21
iget-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->finishedScan:Ljava/util/concurrent/CountDownLatch;
return-object v0
.end method
.method static synthetic access$200(Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;)Ljava/util/concurrent/ExecutorService;
.registers 2
.prologue
.line 21
iget-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->taskExecs:Ljava/util/concurrent/ExecutorService;
return-object v0
.end method
# virtual methods
.method protected getThreadName()Ljava/lang/String;
.registers 2
.prologue
.line 46
const-string/jumbo v0, "tpool-taskbus-thread"
return-object v0
.end method
.method protected scanTaskList(Lcom/cleanmaster/junk/scan/TaskBus$IScanTaskListParams;)V
.registers 13
.prologue
const-wide/16 v8, 0x0
const/4 v3, 0x0
.line 139
if-nez p1, :cond_6
.line 207
:cond_5
:goto_5
return-void
.line 143
:cond_6
invoke-interface {p1}, Lcom/cleanmaster/junk/scan/TaskBus$IScanTaskListParams;->getTaskQueue()Ljava/util/Queue;
move-result-object v4
.line 144
if-eqz v4, :cond_5
invoke-interface {v4}, Ljava/util/Queue;->isEmpty()Z
move-result v0
if-nez v0, :cond_5
.line 148
iget-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->firstTaskInfo:Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;
if-eqz v0, :cond_73
invoke-interface {v4}, Ljava/util/Queue;->size()I
move-result v0
add-int/lit8 v0, v0, 0x1
move v1, v0
.line 150
:goto_1d
new-instance v0, Ljava/util/concurrent/CountDownLatch;
invoke-direct {v0, v1}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V
iput-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->finishedScan:Ljava/util/concurrent/CountDownLatch;
.line 152
new-instance v5, Ljava/util/ArrayList;
invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
.line 153
iget v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->mThreadNum:I
.line 154
if-lez v0, :cond_2f
if-le v0, v1, :cond_30
:cond_2f
move v0, v1
.line 157
:cond_30
new-instance v2, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$MyThreadFactory;
const/4 v6, 0x0
invoke-direct {v2, v6}, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$MyThreadFactory;-><init>(Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$1;)V
invoke-static {v0, v2}, Ljava/util/concurrent/Executors;->newFixedThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;
move-result-object v0
iput-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->taskExecs:Ljava/util/concurrent/ExecutorService;
.line 159
iget-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->firstTaskInfo:Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;
if-eqz v0, :cond_d9
.line 160
const/4 v0, 0x1
.line 161
new-instance v2, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$ExecTaskInfo;
iget-object v6, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->firstTaskInfo:Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;
invoke-direct {v2, p0, v6}, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$ExecTaskInfo;-><init>(Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;)V
.line 163
invoke-virtual {v5, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 165
iget v6, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->mOtherTaskTimeDelay:I
if-lez v6, :cond_54
.line 166
iget v6, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->mOtherTaskTimeDelay:I
invoke-virtual {v2, v6}, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$ExecTaskInfo;->waitTask(I)V
:cond_54
move v2, v0
.line 169
:goto_55
invoke-virtual {p0}, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->getTaskBusCallback()Lcom/cleanmaster/junk/scan/TaskBus$ITaskBusCallback;
move-result-object v6
.line 170
invoke-interface {v4}, Ljava/util/Queue;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;
move-object v10, v0
move v0, v2
move-object v2, v10
:goto_62
if-eqz v2, :cond_88
.line 172
iget-object v7, v2, Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;->mTask:Lcom/cleanmaster/junk/scan/IScanTask;
if-nez v7, :cond_79
move v2, v0
.line 171
:goto_69
invoke-interface {v4}, Ljava/util/Queue;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;
move-object v10, v0
move v0, v2
move-object v2, v10
goto :goto_62
.line 149
:cond_73
invoke-interface {v4}, Ljava/util/Queue;->size()I
move-result v0
move v1, v0
goto :goto_1d
.line 175
:cond_79
iget-object v7, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->mTaskCtrl:Lcom/cleanmaster/junk/scan/TaskCtrlImpl;
invoke-virtual {v7}, Lcom/cleanmaster/junk/scan/TaskCtrlImpl;->checkStop()Z
move-result v7
if-eqz v7, :cond_92
.line 176
if-eqz v6, :cond_88
.line 177
iget-object v2, v2, Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;->mTask:Lcom/cleanmaster/junk/scan/IScanTask;
invoke-interface {v6, v2}, Lcom/cleanmaster/junk/scan/TaskBus$ITaskBusCallback;->notifySkipScan(Lcom/cleanmaster/junk/scan/IScanTask;)V
.line 189
:cond_88
:goto_88
if-ge v0, v1, :cond_a5
.line 190
iget-object v2, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->finishedScan:Ljava/util/concurrent/CountDownLatch;
invoke-virtual {v2}, Ljava/util/concurrent/CountDownLatch;->countDown()V
.line 189
add-int/lit8 v0, v0, 0x1
goto :goto_88
.line 182
:cond_92
new-instance v7, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$ExecTaskInfo;
invoke-direct {v7, p0, v2}, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$ExecTaskInfo;-><init>(Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;)V
.line 183
add-int/lit8 v0, v0, 0x1
.line 184
invoke-virtual {v5, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 185
iget-boolean v2, v2, Lcom/cleanmaster/junk/scan/TaskBus$TaskInfo;->mEssentialTask:Z
if-eqz v2, :cond_a3
.line 186
invoke-virtual {v7, v3}, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$ExecTaskInfo;->waitTask(I)V
:cond_a3
move v2, v0
goto :goto_69
.line 192
:cond_a5
iget-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->finishedScan:Ljava/util/concurrent/CountDownLatch;
invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->getCount()J
move-result-wide v0
cmp-long v0, v0, v8
if-eqz v0, :cond_5
.line 195
:cond_af
:try_start_af
iget-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->finishedScan:Ljava/util/concurrent/CountDownLatch;
const-wide/16 v2, 0xc8
sget-object v1, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invoke-virtual {v0, v2, v3, v1}, Ljava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z
:try_end_b8
.catch Ljava/lang/Exception; {:try_start_af .. :try_end_b8} :catch_d6
.line 199
iget-object v0, p0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus;->finishedScan:Ljava/util/concurrent/CountDownLatch;
invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->getCount()J
move-result-wide v0
cmp-long v0, v0, v8
if-eqz v0, :cond_5
.line 202
invoke-virtual {v5}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_c6
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_af
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$ExecTaskInfo;
.line 203
invoke-virtual {v0}, Lcom/cleanmaster/junk/scan/ThreadPoolTaskBus$ExecTaskInfo;->checkStop()Z
goto :goto_c6
.line 196
:catch_d6
move-exception v0
goto/16 :goto_5
:cond_d9
move v2, v3
goto/16 :goto_55
.end method