ANRDetector.smali
.class public final Lcom/facebook/internal/instrument/anrreport/ANRDetector;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field private static final DETECTION_INTERVAL_IN_MS:I = 0x1f4
.field public static final INSTANCE:Lcom/facebook/internal/instrument/anrreport/ANRDetector;
.field private static final anrDetectorRunnable:Ljava/lang/Runnable;
.field private static final myUid:I
.field private static previousStackTrace:Ljava/lang/String;
.field private static final scheduledExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
# direct methods
.method public static constructor <clinit>()V
.registers 1
new-instance v0, Lcom/facebook/internal/instrument/anrreport/ANRDetector;
invoke-direct {v0}, Lcom/facebook/internal/instrument/anrreport/ANRDetector;-><init>()V
sput-object v0, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->INSTANCE:Lcom/facebook/internal/instrument/anrreport/ANRDetector;
.line 1
invoke-static {}, Landroid/os/Process;->myUid()I
move-result v0
sput v0, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->myUid:I
.line 2
invoke-static {}, Ljava/util/concurrent/Executors;->newSingleThreadScheduledExecutor()Ljava/util/concurrent/ScheduledExecutorService;
move-result-object v0
sput-object v0, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->scheduledExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
const-string v0, ""
.line 3
sput-object v0, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->previousStackTrace:Ljava/lang/String;
.line 4
sget-object v0, Lcom/facebook/appevents/iap/d;->c:Lcom/facebook/appevents/iap/d;
sput-object v0, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->anrDetectorRunnable:Ljava/lang/Runnable;
return-void
.end method
.method private constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static synthetic a()V
.registers 0
invoke-static {}, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->anrDetectorRunnable$lambda-0()V
return-void
.end method
.method private static final anrDetectorRunnable$lambda-0()V
.registers 3
const-class v0, Lcom/facebook/internal/instrument/anrreport/ANRDetector;
invoke-static {v0}, Lcom/facebook/internal/instrument/crashshield/CrashShieldHandler;->isObjectCrashing(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_9
return-void
.line 1
:cond_9
:try_start_9
sget-object v1, Lcom/facebook/FacebookSdk;->INSTANCE:Lcom/facebook/FacebookSdk;
invoke-static {}, Lcom/facebook/FacebookSdk;->getApplicationContext()Landroid/content/Context;
move-result-object v1
const-string v2, "activity"
invoke-virtual {v1, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v1
if-eqz v1, :cond_1d
check-cast v1, Landroid/app/ActivityManager;
.line 2
invoke-static {v1}, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->checkProcessError(Landroid/app/ActivityManager;)V
goto :goto_29
.line 3
:cond_1d
new-instance v1, Ljava/lang/NullPointerException;
const-string v2, "null cannot be cast to non-null type android.app.ActivityManager"
invoke-direct {v1, v2}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
throw v1
:try_end_25
.catch Ljava/lang/Exception; {:try_start_9 .. :try_end_25} :catch_29
.catchall {:try_start_9 .. :try_end_25} :catchall_25
:catchall_25
move-exception v1
.line 4
invoke-static {v1, v0}, Lcom/facebook/internal/instrument/crashshield/CrashShieldHandler;->handleThrowable(Ljava/lang/Throwable;Ljava/lang/Object;)V
:catch_29
:goto_29
return-void
.end method
.method public static final checkProcessError(Landroid/app/ActivityManager;)V
.registers 6
const-class v0, Lcom/facebook/internal/instrument/anrreport/ANRDetector;
invoke-static {v0}, Lcom/facebook/internal/instrument/crashshield/CrashShieldHandler;->isObjectCrashing(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_9
return-void
:cond_9
if-nez p0, :cond_c
goto :goto_5e
.line 1
:cond_c
:try_start_c
invoke-virtual {p0}, Landroid/app/ActivityManager;->getProcessesInErrorState()Ljava/util/List;
move-result-object p0
if-nez p0, :cond_13
goto :goto_5e
.line 2
:cond_13
invoke-interface {p0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object p0
:cond_17
:goto_17
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_5e
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Landroid/app/ActivityManager$ProcessErrorStateInfo;
.line 3
iget v2, v1, Landroid/app/ActivityManager$ProcessErrorStateInfo;->condition:I
const/4 v3, 0x2
if-ne v2, v3, :cond_17
.line 4
iget v2, v1, Landroid/app/ActivityManager$ProcessErrorStateInfo;->uid:I
sget v3, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->myUid:I
if-ne v2, v3, :cond_17
.line 5
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
move-result-object v2
invoke-virtual {v2}, Landroid/os/Looper;->getThread()Ljava/lang/Thread;
move-result-object v2
const-string v3, "getMainLooper().thread"
invoke-static {v2, v3}, Lcom/shopee/sz/loadtask/datasource/a;->x(Ljava/lang/Object;Ljava/lang/String;)V
.line 6
sget-object v3, Lcom/facebook/internal/instrument/InstrumentUtility;->INSTANCE:Lcom/facebook/internal/instrument/InstrumentUtility;
invoke-static {v2}, Lcom/facebook/internal/instrument/InstrumentUtility;->getStackTrace(Ljava/lang/Thread;)Ljava/lang/String;
move-result-object v3
.line 7
sget-object v4, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->previousStackTrace:Ljava/lang/String;
invoke-static {v3, v4}, Lcom/shopee/sz/loadtask/datasource/a;->r(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_17
invoke-static {v2}, Lcom/facebook/internal/instrument/InstrumentUtility;->isSDKRelatedThread(Ljava/lang/Thread;)Z
move-result v2
if-nez v2, :cond_50
goto :goto_17
.line 8
:cond_50
sput-object v3, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->previousStackTrace:Ljava/lang/String;
.line 9
sget-object v2, Lcom/facebook/internal/instrument/InstrumentData$Builder;->INSTANCE:Lcom/facebook/internal/instrument/InstrumentData$Builder;
iget-object v1, v1, Landroid/app/ActivityManager$ProcessErrorStateInfo;->shortMsg:Ljava/lang/String;
invoke-static {v1, v3}, Lcom/facebook/internal/instrument/InstrumentData$Builder;->build(Ljava/lang/String;Ljava/lang/String;)Lcom/facebook/internal/instrument/InstrumentData;
move-result-object v1
invoke-virtual {v1}, Lcom/facebook/internal/instrument/InstrumentData;->save()V
:try_end_5d
.catchall {:try_start_c .. :try_end_5d} :catchall_5f
goto :goto_17
:cond_5e
:goto_5e
return-void
:catchall_5f
move-exception p0
.line 10
invoke-static {p0, v0}, Lcom/facebook/internal/instrument/crashshield/CrashShieldHandler;->handleThrowable(Ljava/lang/Throwable;Ljava/lang/Object;)V
return-void
.end method
.method public static final start()V
.registers 9
const-class v0, Lcom/facebook/internal/instrument/anrreport/ANRDetector;
invoke-static {v0}, Lcom/facebook/internal/instrument/crashshield/CrashShieldHandler;->isObjectCrashing(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_9
return-void
.line 1
:cond_9
:try_start_9
sget-object v2, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->scheduledExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
.line 2
sget-object v3, Lcom/facebook/internal/instrument/anrreport/ANRDetector;->anrDetectorRunnable:Ljava/lang/Runnable;
const-wide/16 v4, 0x0
const/16 v1, 0x1f4
int-to-long v6, v1
sget-object v8, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
.line 3
invoke-interface/range {v2 .. v8}, Ljava/util/concurrent/ScheduledExecutorService;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
:try_end_17
.catchall {:try_start_9 .. :try_end_17} :catchall_18
return-void
:catchall_18
move-exception v1
.line 4
invoke-static {v1, v0}, Lcom/facebook/internal/instrument/crashshield/CrashShieldHandler;->handleThrowable(Ljava/lang/Throwable;Ljava/lang/Object;)V
return-void
.end method