CustomHandler.smali
.class public Lcom/tencent/liteav/base/util/CustomHandler;
.super Landroid/os/Handler;
.source "SourceFile"
# annotations
.annotation runtime Lcom/tencent/liteav/base/annotations/JNINamespace;
value = "liteav"
.end annotation
# static fields
.field private static final TIMEOUT_QUIT_LOOPER:J
# instance fields
.field private mQuitLooperTimeoutRunnable:Ljava/lang/Runnable;
.field private final mTAG:Ljava/lang/String;
.field private final mUIHandler:Landroid/os/Handler;
# direct methods
.method static constructor <clinit>()V
.registers 3
.line 25
sget-object v0, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;
const-wide/16 v1, 0x1e
invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/TimeUnit;->toMillis(J)J
move-result-wide v0
sput-wide v0, Lcom/tencent/liteav/base/util/CustomHandler;->TIMEOUT_QUIT_LOOPER:J
return-void
.end method
.method public constructor <init>(Landroid/os/Looper;)V
.registers 3
const/4 v0, 0x0
.line 38
invoke-direct {p0, p1, v0}, Lcom/tencent/liteav/base/util/CustomHandler;-><init>(Landroid/os/Looper;Landroid/os/Handler$Callback;)V
return-void
.end method
.method public constructor <init>(Landroid/os/Looper;Landroid/os/Handler$Callback;)V
.registers 4
.line 42
invoke-direct {p0, p1, p2}, Landroid/os/Handler;-><init>(Landroid/os/Looper;Landroid/os/Handler$Callback;)V
.line 27
new-instance p1, Landroid/os/Handler;
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
move-result-object p2
invoke-direct {p1, p2}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
iput-object p1, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mUIHandler:Landroid/os/Handler;
.line 29
new-instance p1, Lcom/tencent/liteav/base/util/CustomHandler$1;
invoke-direct {p1, p0}, Lcom/tencent/liteav/base/util/CustomHandler$1;-><init>(Lcom/tencent/liteav/base/util/CustomHandler;)V
iput-object p1, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mQuitLooperTimeoutRunnable:Ljava/lang/Runnable;
.line 43
new-instance p1, Ljava/lang/StringBuilder;
const-string p2, "TXCHandler_"
invoke-direct {p1, p2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p0}, Ljava/lang/Object;->hashCode()I
move-result p2
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
iput-object p1, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mTAG:Ljava/lang/String;
.line 44
new-instance p2, Ljava/lang/StringBuilder;
const-string v0, "["
invoke-direct {p2, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object v0
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v0, "]"
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-static {p1, p2}, Lcom/tencent/liteav/base/util/LiteavLog;->i(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method static synthetic access$000(Lcom/tencent/liteav/base/util/CustomHandler;)Ljava/lang/String;
.registers 1
.line 22
iget-object p0, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mTAG:Ljava/lang/String;
return-object p0
.end method
.method static synthetic lambda$quitLooper$2(Lcom/tencent/liteav/base/util/CustomHandler;)Z
.registers 3
.line 147
iget-object v0, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mTAG:Ljava/lang/String;
const-string v1, "queue idle handle."
invoke-static {v0, v1}, Lcom/tencent/liteav/base/util/LiteavLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 148
invoke-static {}, Lcom/tencent/liteav/base/system/LiteavSystemInfo;->getSystemOSVersionInt()I
move-result v0
const/16 v1, 0x12
if-lt v0, v1, :cond_17
.line 149
invoke-virtual {p0}, Lcom/tencent/liteav/base/util/CustomHandler;->getLooper()Landroid/os/Looper;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Looper;->quitSafely()V
goto :goto_1e
.line 151
:cond_17
invoke-virtual {p0}, Lcom/tencent/liteav/base/util/CustomHandler;->getLooper()Landroid/os/Looper;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Looper;->quit()V
.line 153
:goto_1e
iget-object v0, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mUIHandler:Landroid/os/Handler;
iget-object p0, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mQuitLooperTimeoutRunnable:Ljava/lang/Runnable;
invoke-virtual {v0, p0}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
const/4 p0, 0x0
return p0
.end method
.method static synthetic lambda$quitLooper$3(Lcom/tencent/liteav/base/util/CustomHandler;Landroid/os/MessageQueue$IdleHandler;)V
.registers 4
.line 158
invoke-virtual {p0}, Lcom/tencent/liteav/base/util/CustomHandler;->getLooper()Landroid/os/Looper;
move-result-object v0
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
move-result-object v1
if-ne v0, v1, :cond_12
.line 159
iget-object p0, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mTAG:Ljava/lang/String;
const-string p1, "try to quitLooper main looper!"
invoke-static {p0, p1}, Lcom/tencent/liteav/base/util/LiteavLog;->e(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 162
:cond_12
iget-object p0, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mTAG:Ljava/lang/String;
const-string v0, "add idle handle."
invoke-static {p0, v0}, Lcom/tencent/liteav/base/util/LiteavLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 163
invoke-static {}, Landroid/os/Looper;->myQueue()Landroid/os/MessageQueue;
move-result-object p0
invoke-virtual {p0, p1}, Landroid/os/MessageQueue;->addIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V
return-void
.end method
.method static synthetic lambda$runAndWaitDone$0(Ljava/lang/Runnable;Ljava/util/concurrent/CountDownLatch;)V
.registers 2
.line 57
invoke-interface {p0}, Ljava/lang/Runnable;->run()V
.line 58
invoke-virtual {p1}, Ljava/util/concurrent/CountDownLatch;->countDown()V
return-void
.end method
.method static synthetic lambda$runAndWaitDone$1(Ljava/lang/Runnable;Ljava/util/concurrent/CountDownLatch;)V
.registers 2
.line 82
invoke-interface {p0}, Ljava/lang/Runnable;->run()V
.line 83
invoke-virtual {p1}, Ljava/util/concurrent/CountDownLatch;->countDown()V
return-void
.end method
# virtual methods
.method public isCurrentThread()Z
.registers 3
.line 181
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
if-eqz v0, :cond_12
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
invoke-virtual {p0}, Lcom/tencent/liteav/base/util/CustomHandler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-ne v0, v1, :cond_12
const/4 v0, 0x1
return v0
:cond_12
const/4 v0, 0x0
return v0
.end method
.method public postDelayedTask(Ljava/lang/Runnable;J)Z
.registers 4
.line 107
invoke-virtual {p0, p1, p2, p3}, Lcom/tencent/liteav/base/util/CustomHandler;->postDelayed(Ljava/lang/Runnable;J)Z
move-result p1
return p1
.end method
.method public postTask(Ljava/lang/Runnable;)Z
.registers 2
.line 102
invoke-virtual {p0, p1}, Lcom/tencent/liteav/base/util/CustomHandler;->post(Ljava/lang/Runnable;)Z
move-result p1
return p1
.end method
.method public quitLooper()V
.registers 5
.line 146
invoke-static {p0}, Lcom/tencent/liteav/base/util/d;->a(Lcom/tencent/liteav/base/util/CustomHandler;)Landroid/os/MessageQueue$IdleHandler;
move-result-object v0
.line 157
invoke-static {p0, v0}, Lcom/tencent/liteav/base/util/e;->a(Lcom/tencent/liteav/base/util/CustomHandler;Landroid/os/MessageQueue$IdleHandler;)Ljava/lang/Runnable;
move-result-object v0
invoke-virtual {p0, v0}, Lcom/tencent/liteav/base/util/CustomHandler;->post(Ljava/lang/Runnable;)Z
.line 167
iget-object v0, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mUIHandler:Landroid/os/Handler;
iget-object v1, p0, Lcom/tencent/liteav/base/util/CustomHandler;->mQuitLooperTimeoutRunnable:Ljava/lang/Runnable;
sget-wide v2, Lcom/tencent/liteav/base/util/CustomHandler;->TIMEOUT_QUIT_LOOPER:J
invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
return-void
.end method
.method public quitLooperAndWaitDone()V
.registers 2
.line 171
invoke-virtual {p0}, Lcom/tencent/liteav/base/util/CustomHandler;->quitLooper()V
.line 173
:try_start_3
invoke-virtual {p0}, Lcom/tencent/liteav/base/util/CustomHandler;->getLooper()Landroid/os/Looper;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Looper;->getThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->join()V
:try_end_e
.catch Ljava/lang/InterruptedException; {:try_start_3 .. :try_end_e} :catch_e
:catch_e
return-void
.end method
.method public runAndWaitDone(Ljava/lang/Runnable;)Z
.registers 4
.line 55
new-instance v0, Ljava/util/concurrent/CountDownLatch;
const/4 v1, 0x1
invoke-direct {v0, v1}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V
.line 56
invoke-static {p1, v0}, Lcom/tencent/liteav/base/util/b;->a(Ljava/lang/Runnable;Ljava/util/concurrent/CountDownLatch;)Ljava/lang/Runnable;
move-result-object p1
invoke-virtual {p0, p1}, Lcom/tencent/liteav/base/util/CustomHandler;->post(Ljava/lang/Runnable;)Z
move-result p1
if-eqz p1, :cond_1b
.line 63
:try_start_10
invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->await()V
:try_end_13
.catch Ljava/lang/InterruptedException; {:try_start_10 .. :try_end_13} :catch_14
goto :goto_1b
.line 65
:catch_14
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
:cond_1b
:goto_1b
return p1
.end method
.method public runAndWaitDone(Ljava/lang/Runnable;J)Z
.registers 6
.line 80
new-instance v0, Ljava/util/concurrent/CountDownLatch;
const/4 v1, 0x1
invoke-direct {v0, v1}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V
.line 81
invoke-static {p1, v0}, Lcom/tencent/liteav/base/util/c;->a(Ljava/lang/Runnable;Ljava/util/concurrent/CountDownLatch;)Ljava/lang/Runnable;
move-result-object p1
.line 85
invoke-virtual {p0, p1}, Lcom/tencent/liteav/base/util/CustomHandler;->post(Ljava/lang/Runnable;)Z
move-result p1
if-eqz p1, :cond_1d
.line 88
:try_start_10
sget-object v1, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invoke-virtual {v0, p2, p3, v1}, Ljava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z
:try_end_15
.catch Ljava/lang/InterruptedException; {:try_start_10 .. :try_end_15} :catch_16
goto :goto_1d
.line 90
:catch_16
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object p2
invoke-virtual {p2}, Ljava/lang/Thread;->interrupt()V
:cond_1d
:goto_1d
return p1
.end method
.method public runOrPost(Ljava/lang/Runnable;)Z
.registers 3
const/4 v0, 0x0
.line 97
invoke-virtual {p0, p1, v0}, Lcom/tencent/liteav/base/util/CustomHandler;->runOrPost(Ljava/lang/Runnable;I)Z
move-result p1
return p1
.end method
.method public runOrPost(Ljava/lang/Runnable;I)Z
.registers 5
.line 119
invoke-virtual {p0}, Lcom/tencent/liteav/base/util/CustomHandler;->getLooper()Landroid/os/Looper;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Looper;->getThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->isAlive()Z
move-result v0
if-nez v0, :cond_10
const/4 p1, 0x0
return p1
.line 123
:cond_10
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
invoke-virtual {p0}, Lcom/tencent/liteav/base/util/CustomHandler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-ne v0, v1, :cond_21
if-nez p2, :cond_21
.line 124
invoke-interface {p1}, Ljava/lang/Runnable;->run()V
const/4 p1, 0x1
return p1
:cond_21
if-nez p2, :cond_28
.line 128
invoke-virtual {p0, p1}, Lcom/tencent/liteav/base/util/CustomHandler;->post(Ljava/lang/Runnable;)Z
move-result p1
return p1
:cond_28
int-to-long v0, p2
.line 130
invoke-virtual {p0, p1, v0, v1}, Lcom/tencent/liteav/base/util/CustomHandler;->postDelayed(Ljava/lang/Runnable;J)Z
move-result p1
return p1
.end method