HeartBeatManager.smali
.class public Lio/rong/imlib/HeartBeatManager;
.super Ljava/lang/Object;
.source "HeartBeatManager.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lio/rong/imlib/HeartBeatManager$HeartBeatListener;,
Lio/rong/imlib/HeartBeatManager$HeartBeatManagerHolder;
}
.end annotation
# static fields
.field private static final PING_ACQUIRE_WAKELOCK_TIME:J = 0x3e8L
.field private static final PING_MAX_TIME_OUT:J = 0x15f90L
.field private static final PING_PERIOD:J = 0x3a98L
.field private static final TAG:Ljava/lang/String; = "heartBeatManager"
# instance fields
.field private volatile acquireWakeLockTime:J
.field private heartBeatListener:Lio/rong/imlib/HeartBeatManager$HeartBeatListener;
.field private heartBeatQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/ConcurrentLinkedQueue<",
"Ljava/lang/Long;",
">;"
}
.end annotation
.end field
.field private volatile isBackground:Z
.field private final mLock:Ljava/lang/Object;
.field private mRunWakeLock:Landroid/os/PowerManager$WakeLock;
.field private mWorkHandler:Landroid/os/Handler;
.field private nativeObject:Lio/rong/imlib/NativeObject;
.field private pm:Landroid/os/PowerManager;
.field private timer:Ljava/util/Timer;
# direct methods
.method private constructor <init>()V
.registers 2
.line 2
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x0
.line 3
iput-object v0, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
.line 4
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Lio/rong/imlib/HeartBeatManager;->mLock:Ljava/lang/Object;
.line 5
new-instance v0, Ljava/util/concurrent/ConcurrentLinkedQueue;
invoke-direct {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;-><init>()V
iput-object v0, p0, Lio/rong/imlib/HeartBeatManager;->heartBeatQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
return-void
.end method
.method synthetic constructor <init>(Lio/rong/imlib/HeartBeatManager$1;)V
.registers 2
.line 1
invoke-direct {p0}, Lio/rong/imlib/HeartBeatManager;-><init>()V
return-void
.end method
.method static synthetic access$100(Lio/rong/imlib/HeartBeatManager;Landroid/content/Context;)V
.registers 2
.line 1
invoke-direct {p0, p1}, Lio/rong/imlib/HeartBeatManager;->startPingWithWakeLock(Landroid/content/Context;)V
return-void
.end method
.method static synthetic access$200(Lio/rong/imlib/HeartBeatManager;JI)V
.registers 4
.line 1
invoke-direct {p0, p1, p2, p3}, Lio/rong/imlib/HeartBeatManager;->enqueue(JI)V
return-void
.end method
.method private acquirePingWakeLock(Landroid/content/Context;)V
.registers 5
.line 1
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->mLock:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
iget-object v1, p0, Lio/rong/imlib/HeartBeatManager;->pm:Landroid/os/PowerManager;
if-nez v1, :cond_1c
const-string v1, "heartBeatManager"
const-string v2, "acquirePingWakeLock pm is null"
.line 3
invoke-static {v1, v2}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 4
invoke-virtual {p1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
move-result-object p1
const-string v1, "power"
invoke-virtual {p1, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Landroid/os/PowerManager;
iput-object p1, p0, Lio/rong/imlib/HeartBeatManager;->pm:Landroid/os/PowerManager;
.line 5
:cond_1c
iget-object p1, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
if-nez p1, :cond_2f
iget-object p1, p0, Lio/rong/imlib/HeartBeatManager;->pm:Landroid/os/PowerManager;
if-eqz p1, :cond_2f
.line 6
iget-object p1, p0, Lio/rong/imlib/HeartBeatManager;->pm:Landroid/os/PowerManager;
const/4 v1, 0x1
const-string v2, "HeartBeatManager:run"
invoke-virtual {p1, v1, v2}, Landroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;
move-result-object p1
iput-object p1, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
.line 7
:cond_2f
iget-object p1, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
if-eqz p1, :cond_49
iget-object p1, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {p1}, Landroid/os/PowerManager$WakeLock;->isHeld()Z
move-result p1
if-nez p1, :cond_49
const-string p1, "heartBeatManager"
const-string v1, "acquirePingWakeLock"
.line 8
invoke-static {p1, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 9
iget-object p1, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
iget-wide v1, p0, Lio/rong/imlib/HeartBeatManager;->acquireWakeLockTime:J
invoke-virtual {p1, v1, v2}, Landroid/os/PowerManager$WakeLock;->acquire(J)V
.line 10
:cond_49
monitor-exit v0
return-void
:catchall_4b
move-exception p1
monitor-exit v0
:try_end_4d
.catchall {:try_start_3 .. :try_end_4d} :catchall_4b
throw p1
.end method
.method private declared-synchronized enqueue(JI)V
.registers 8
monitor-enter p0
:try_start_1
const-string v0, "heartBeatManager"
.line 1
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "enqueue pingCode = "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
invoke-direct {p0, p1, p2}, Lio/rong/imlib/HeartBeatManager;->isPingTimeOut(J)Z
move-result v0
const-string v1, "heartBeatManager"
.line 3
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "isTimeOut = "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
if-eqz v0, :cond_37
.line 4
invoke-direct {p0}, Lio/rong/imlib/HeartBeatManager;->resetQueueAndReconnect()V
goto :goto_46
:cond_37
if-nez p3, :cond_46
.line 5
iget-object p3, p0, Lio/rong/imlib/HeartBeatManager;->heartBeatQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
if-eqz p3, :cond_46
.line 6
iget-object p3, p0, Lio/rong/imlib/HeartBeatManager;->heartBeatQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object p1
invoke-virtual {p3, p1}, Ljava/util/concurrent/ConcurrentLinkedQueue;->add(Ljava/lang/Object;)Z
:try_end_46
.catchall {:try_start_1 .. :try_end_46} :catchall_48
.line 7
:cond_46
:goto_46
monitor-exit p0
return-void
:catchall_48
move-exception p1
monitor-exit p0
throw p1
.end method
.method public static getInstance()Lio/rong/imlib/HeartBeatManager;
.registers 1
.line 1
sget-object v0, Lio/rong/imlib/HeartBeatManager$HeartBeatManagerHolder;->instance:Lio/rong/imlib/HeartBeatManager;
return-object v0
.end method
.method private initConfig(Landroid/content/Context;)V
.registers 8
const-string v0, "heartBeatManager"
const-string v1, "initConfig"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
move-result-object v1
const-wide/16 v2, 0x3e8
:try_start_d
const-string v4, "rc_heartbeat_acquire_time"
const-string v5, "string"
.line 3
invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, v4, v5, p1}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
move-result p1
invoke-virtual {v1, p1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
move-result-object p1
.line 4
invoke-static {p1}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v4
iput-wide v4, p0, Lio/rong/imlib/HeartBeatManager;->acquireWakeLockTime:J
:try_end_23
.catch Ljava/lang/Exception; {:try_start_d .. :try_end_23} :catch_24
goto :goto_2b
.line 5
:catch_24
iput-wide v2, p0, Lio/rong/imlib/HeartBeatManager;->acquireWakeLockTime:J
const-string p1, "Read config file exception. Use default heartbeat time value."
.line 6
invoke-static {v0, p1}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 7
:goto_2b
iget-wide v0, p0, Lio/rong/imlib/HeartBeatManager;->acquireWakeLockTime:J
cmp-long p1, v0, v2
if-gez p1, :cond_33
.line 8
iput-wide v2, p0, Lio/rong/imlib/HeartBeatManager;->acquireWakeLockTime:J
:cond_33
return-void
.end method
.method private isPingTimeOut(J)Z
.registers 7
.line 1
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->heartBeatQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
const/4 v1, 0x0
if-nez v0, :cond_6
return v1
.line 2
:cond_6
invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->peek()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Long;
if-nez v0, :cond_f
return v1
.line 3
:cond_f
invoke-virtual {v0}, Ljava/lang/Long;->longValue()J
move-result-wide v2
sub-long/2addr p1, v2
const-wide/32 v2, 0x15f90
cmp-long v0, p1, v2
if-lez v0, :cond_1c
const/4 v1, 0x1
:cond_1c
return v1
.end method
.method private releasePingWakeLock()V
.registers 6
.line 1
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->mLock:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
iget-object v1, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
if-eqz v1, :cond_33
iget-object v1, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v1}, Landroid/os/PowerManager$WakeLock;->isHeld()Z
move-result v1
:try_end_d
.catchall {:try_start_3 .. :try_end_d} :catchall_35
if-eqz v1, :cond_33
const/4 v1, 0x0
:try_start_10
const-string v2, "heartBeatManager"
const-string v3, "releasePingWakeLock"
.line 3
invoke-static {v2, v3}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 4
iget-object v2, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
const/4 v3, 0x0
invoke-virtual {v2, v3}, Landroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V
.line 5
iget-object v2, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v2}, Landroid/os/PowerManager$WakeLock;->release()V
:try_end_22
.catch Ljava/lang/Exception; {:try_start_10 .. :try_end_22} :catch_27
.catchall {:try_start_10 .. :try_end_22} :catchall_25
.line 6
:goto_22
:try_start_22
iput-object v1, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
:try_end_24
.catchall {:try_start_22 .. :try_end_24} :catchall_35
goto :goto_33
:catchall_25
move-exception v2
goto :goto_30
:catch_27
move-exception v2
:try_start_28
const-string v3, "heartBeatManager"
const-string v4, "releasePingWakeLock exception "
.line 7
invoke-static {v3, v4, v2}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
:try_end_2f
.catchall {:try_start_28 .. :try_end_2f} :catchall_25
goto :goto_22
.line 8
:goto_30
:try_start_30
iput-object v1, p0, Lio/rong/imlib/HeartBeatManager;->mRunWakeLock:Landroid/os/PowerManager$WakeLock;
throw v2
.line 9
:cond_33
:goto_33
monitor-exit v0
return-void
:catchall_35
move-exception v1
monitor-exit v0
:try_end_37
.catchall {:try_start_30 .. :try_end_37} :catchall_35
goto :goto_39
:goto_38
throw v1
:goto_39
goto :goto_38
.end method
.method private declared-synchronized replenishPing(Landroid/content/Context;ZI)V
.registers 7
monitor-enter p0
:try_start_1
const-string v0, "heartBeatManager"
.line 3
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "replenishPing context = "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v2, "\uff0cisBackground = "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
const-string v2, ", status = "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 4
sget-object v0, Lio/rong/imlib/RongIMClient$ConnectionStatusListener$ConnectionStatus;->CONNECTED:Lio/rong/imlib/RongIMClient$ConnectionStatusListener$ConnectionStatus;
invoke-virtual {v0}, Lio/rong/imlib/RongIMClient$ConnectionStatusListener$ConnectionStatus;->getValue()I
move-result v0
if-ne p3, v0, :cond_3b
if-eqz p2, :cond_35
.line 5
invoke-direct {p0}, Lio/rong/imlib/HeartBeatManager;->stopReplenishHeartbeat()V
goto :goto_41
.line 6
:cond_35
iget-object p1, p0, Lio/rong/imlib/HeartBeatManager;->nativeObject:Lio/rong/imlib/NativeObject;
invoke-direct {p0, p1}, Lio/rong/imlib/HeartBeatManager;->startReplenishHeartbeat(Lio/rong/imlib/NativeObject;)V
goto :goto_41
.line 7
:cond_3b
invoke-virtual {p0, p1}, Lio/rong/imlib/HeartBeatManager;->removeHeartbeatFromAM(Landroid/content/Context;)V
.line 8
invoke-direct {p0}, Lio/rong/imlib/HeartBeatManager;->stopReplenishHeartbeat()V
:try_end_41
.catchall {:try_start_1 .. :try_end_41} :catchall_43
.line 9
:goto_41
monitor-exit p0
return-void
:catchall_43
move-exception p1
monitor-exit p0
throw p1
.end method
.method private resetQueue()V
.registers 3
const-string v0, "heartBeatManager"
const-string v1, "resetQueue"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->heartBeatQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
if-eqz v0, :cond_e
.line 3
invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->clear()V
:cond_e
return-void
.end method
.method private resetQueueAndReconnect()V
.registers 3
const-string v0, "heartBeatManager"
const-string v1, "resetQueueAndReconnect"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
invoke-direct {p0}, Lio/rong/imlib/HeartBeatManager;->resetQueue()V
.line 3
invoke-direct {p0}, Lio/rong/imlib/HeartBeatManager;->retry()V
return-void
.end method
.method private retry()V
.registers 3
const-string v0, "heartBeatManager"
const-string v1, "retry"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->heartBeatListener:Lio/rong/imlib/HeartBeatManager$HeartBeatListener;
if-eqz v0, :cond_e
.line 3
invoke-interface {v0}, Lio/rong/imlib/HeartBeatManager$HeartBeatListener;->onPongReceiveFail()V
:cond_e
return-void
.end method
.method private startPingWithWakeLock(Landroid/content/Context;)V
.registers 5
const-string v0, "heartBeatManager"
const-string v1, "startPingWithWakeLock"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
invoke-direct {p0, p1}, Lio/rong/imlib/HeartBeatManager;->acquirePingWakeLock(Landroid/content/Context;)V
.line 3
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->nativeObject:Lio/rong/imlib/NativeObject;
invoke-virtual {v0}, Lio/rong/imlib/NativeObject;->ping()I
move-result v0
.line 4
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v1
invoke-direct {p0, v1, v2, v0}, Lio/rong/imlib/HeartBeatManager;->enqueue(JI)V
.line 5
invoke-virtual {p0, p1}, Lio/rong/imlib/HeartBeatManager;->scheduleHeartbeat(Landroid/content/Context;)V
return-void
.end method
.method private declared-synchronized startReplenishHeartbeat(Lio/rong/imlib/NativeObject;)V
.registers 9
monitor-enter p0
.line 1
:try_start_1
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->timer:Ljava/util/Timer;
if-nez v0, :cond_3e
const-string v0, "heartBeatManager"
const-string v1, "start replenish heartbeat"
.line 2
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 3
new-instance v0, Ljava/util/Timer;
invoke-direct {v0}, Ljava/util/Timer;-><init>()V
iput-object v0, p0, Lio/rong/imlib/HeartBeatManager;->timer:Ljava/util/Timer;
.line 4
new-instance v2, Lio/rong/imlib/HeartBeatManager$2;
invoke-direct {v2, p0, p1}, Lio/rong/imlib/HeartBeatManager$2;-><init>(Lio/rong/imlib/HeartBeatManager;Lio/rong/imlib/NativeObject;)V
const/4 p1, 0x3
.line 5
sget-object v0, Lio/rong/common/fwlog/FwLog$LogTag;->L_PING_S:Lio/rong/common/fwlog/FwLog$LogTag;
invoke-virtual {v0}, Lio/rong/common/fwlog/FwLog$LogTag;->getTag()Ljava/lang/String;
move-result-object v0
const-string v1, "interval|enabled"
const/4 v3, 0x2
new-array v3, v3, [Ljava/lang/Object;
const/4 v4, 0x0
invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v5
aput-object v5, v3, v4
const/4 v4, 0x1
invoke-static {v4}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v5
aput-object v5, v3, v4
invoke-static {p1, v4, v0, v1, v3}, Lio/rong/common/fwlog/FwLog;->write(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
.line 6
iget-object v1, p0, Lio/rong/imlib/HeartBeatManager;->timer:Ljava/util/Timer;
const-wide/16 v3, 0x0
const-wide/16 v5, 0x3a98
invoke-virtual/range {v1 .. v6}, Ljava/util/Timer;->schedule(Ljava/util/TimerTask;JJ)V
:try_end_3e
.catchall {:try_start_1 .. :try_end_3e} :catchall_40
.line 7
:cond_3e
monitor-exit p0
return-void
:catchall_40
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized stopReplenishHeartbeat()V
.registers 7
monitor-enter p0
.line 1
:try_start_1
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->timer:Ljava/util/Timer;
if-eqz v0, :cond_33
const/4 v0, 0x3
.line 2
sget-object v1, Lio/rong/common/fwlog/FwLog$LogTag;->L_PING_S:Lio/rong/common/fwlog/FwLog$LogTag;
invoke-virtual {v1}, Lio/rong/common/fwlog/FwLog$LogTag;->getTag()Ljava/lang/String;
move-result-object v1
const-string v2, "interval|enabled"
const/4 v3, 0x2
new-array v3, v3, [Ljava/lang/Object;
const-wide/16 v4, 0x3a98
invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v4
const/4 v5, 0x0
aput-object v4, v3, v5
invoke-static {v5}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v4
const/4 v5, 0x1
aput-object v4, v3, v5
invoke-static {v0, v5, v1, v2, v3}, Lio/rong/common/fwlog/FwLog;->write(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
.line 3
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->timer:Ljava/util/Timer;
invoke-virtual {v0}, Ljava/util/Timer;->cancel()V
const/4 v0, 0x0
.line 4
iput-object v0, p0, Lio/rong/imlib/HeartBeatManager;->timer:Ljava/util/Timer;
const-string v0, "heartBeatManager"
const-string v1, "stop replenish heartbeat"
.line 5
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
:try_end_33
.catchall {:try_start_1 .. :try_end_33} :catchall_35
.line 6
:cond_33
monitor-exit p0
return-void
:catchall_35
move-exception v0
monitor-exit p0
throw v0
.end method
# virtual methods
.method cancelSDKHeartBeat(Landroid/content/Context;)V
.registers 7
const-string v0, "heartBeatManager"
const-string v1, "cancelSDKHeartBeat"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
sget-object v0, Lio/rong/common/fwlog/FwLog$LogTag;->L_PING_S:Lio/rong/common/fwlog/FwLog$LogTag;
invoke-virtual {v0}, Lio/rong/common/fwlog/FwLog$LogTag;->getTag()Ljava/lang/String;
move-result-object v0
const/4 v1, 0x1
new-array v2, v1, [Ljava/lang/Object;
invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v3
const/4 v4, 0x0
aput-object v3, v2, v4
const/4 v3, 0x2
const-string v4, "cancel"
invoke-static {v3, v1, v0, v4, v2}, Lio/rong/common/fwlog/FwLog;->write(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
.line 3
invoke-static {p1}, Lio/rong/common/WakeLockUtils;->cancelSDKHeartBeat(Landroid/content/Context;)V
return-void
.end method
.method declared-synchronized dequeue()V
.registers 5
monitor-enter p0
:try_start_1
const-string v0, "heartBeatManager"
const-string v1, "dequeue"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
invoke-direct {p0, v0, v1}, Lio/rong/imlib/HeartBeatManager;->isPingTimeOut(J)Z
move-result v0
const-string v1, "heartBeatManager"
.line 3
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "isTimeOut = "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
if-eqz v0, :cond_2c
.line 4
invoke-direct {p0}, Lio/rong/imlib/HeartBeatManager;->resetQueueAndReconnect()V
goto :goto_35
.line 5
:cond_2c
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->heartBeatQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
if-eqz v0, :cond_35
.line 6
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->heartBeatQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->poll()Ljava/lang/Object;
.line 7
:cond_35
:goto_35
invoke-direct {p0}, Lio/rong/imlib/HeartBeatManager;->releasePingWakeLock()V
:try_end_38
.catchall {:try_start_1 .. :try_end_38} :catchall_3a
.line 8
monitor-exit p0
return-void
:catchall_3a
move-exception v0
monitor-exit p0
throw v0
.end method
.method init(Landroid/content/Context;Lio/rong/imlib/NativeObject;)V
.registers 5
.line 1
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "init : "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "heartBeatManager"
invoke-static {v1, v0}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
if-eqz p2, :cond_33
.line 2
iput-object p2, p0, Lio/rong/imlib/HeartBeatManager;->nativeObject:Lio/rong/imlib/NativeObject;
.line 3
new-instance p2, Landroid/os/HandlerThread;
const-string v0, "PING_WORK"
invoke-direct {p2, v0}, Landroid/os/HandlerThread;-><init>(Ljava/lang/String;)V
.line 4
invoke-virtual {p2}, Landroid/os/HandlerThread;->start()V
.line 5
new-instance v0, Landroid/os/Handler;
invoke-virtual {p2}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;
move-result-object p2
invoke-direct {v0, p2}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
iput-object v0, p0, Lio/rong/imlib/HeartBeatManager;->mWorkHandler:Landroid/os/Handler;
.line 6
invoke-direct {p0, p1}, Lio/rong/imlib/HeartBeatManager;->initConfig(Landroid/content/Context;)V
return-void
.line 7
:cond_33
new-instance p1, Ljava/lang/RuntimeException;
const-string p2, "NativeClient is uninitialized!"
invoke-direct {p1, p2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method ping(Landroid/content/Context;)V
.registers 7
const-string v0, "heartBeatManager"
const-string v1, "ping"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
sget-object v0, Lio/rong/common/fwlog/FwLog$LogTag;->L_PING_S:Lio/rong/common/fwlog/FwLog$LogTag;
invoke-virtual {v0}, Lio/rong/common/fwlog/FwLog$LogTag;->getTag()Ljava/lang/String;
move-result-object v0
const/4 v1, 0x1
new-array v2, v1, [Ljava/lang/Object;
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v3
invoke-static {v3, v4}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v3
const/4 v4, 0x0
aput-object v3, v2, v4
const/4 v3, 0x3
const-string v4, "time"
invoke-static {v3, v1, v0, v4, v2}, Lio/rong/common/fwlog/FwLog;->write(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
.line 3
iget-object v0, p0, Lio/rong/imlib/HeartBeatManager;->mWorkHandler:Landroid/os/Handler;
if-eqz v0, :cond_2d
.line 4
new-instance v1, Lio/rong/imlib/HeartBeatManager$1;
invoke-direct {v1, p0, p1}, Lio/rong/imlib/HeartBeatManager$1;-><init>(Lio/rong/imlib/HeartBeatManager;Landroid/content/Context;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
:cond_2d
return-void
.end method
.method removeHeartbeatFromAM(Landroid/content/Context;)V
.registers 4
const-string v0, "heartBeatManager"
const-string v1, "cancelHeartbeat"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
invoke-static {p1}, Lio/rong/common/WakeLockUtils;->cancelHeartbeat(Landroid/content/Context;)V
return-void
.end method
.method declared-synchronized replenishPing(Landroid/content/Context;I)V
.registers 4
monitor-enter p0
.line 1
:try_start_1
iget-boolean v0, p0, Lio/rong/imlib/HeartBeatManager;->isBackground:Z
invoke-direct {p0, p1, v0, p2}, Lio/rong/imlib/HeartBeatManager;->replenishPing(Landroid/content/Context;ZI)V
:try_end_6
.catchall {:try_start_1 .. :try_end_6} :catchall_8
.line 2
monitor-exit p0
return-void
:catchall_8
move-exception p1
monitor-exit p0
throw p1
.end method
.method scheduleHeartbeat(Landroid/content/Context;)V
.registers 4
const-string v0, "heartBeatManager"
const-string v1, "scheduleHeartbeat"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
invoke-static {p1}, Lio/rong/common/WakeLockUtils;->scheduleHeartbeat(Landroid/content/Context;)V
return-void
.end method
.method setHeartBeatListener(Lio/rong/imlib/HeartBeatManager$HeartBeatListener;)V
.registers 2
.line 1
iput-object p1, p0, Lio/rong/imlib/HeartBeatManager;->heartBeatListener:Lio/rong/imlib/HeartBeatManager$HeartBeatListener;
return-void
.end method
.method setIsBackgroundMode(Landroid/content/Context;Z)V
.registers 4
.line 1
iput-boolean p2, p0, Lio/rong/imlib/HeartBeatManager;->isBackground:Z
.line 2
invoke-static {}, Lio/rong/imlib/ConnectionService;->getInstance()Lio/rong/imlib/ConnectionService;
move-result-object v0
invoke-virtual {v0}, Lio/rong/imlib/ConnectionService;->getConnectionState()Lio/rong/imlib/ConnectionState;
move-result-object v0
invoke-virtual {v0}, Lio/rong/imlib/ConnectionState;->getCurrentStatus()Lio/rong/imlib/RongIMClient$ConnectionStatusListener$ConnectionStatus;
move-result-object v0
invoke-virtual {v0}, Lio/rong/imlib/RongIMClient$ConnectionStatusListener$ConnectionStatus;->getValue()I
move-result v0
invoke-direct {p0, p1, p2, v0}, Lio/rong/imlib/HeartBeatManager;->replenishPing(Landroid/content/Context;ZI)V
return-void
.end method