BackgroundDetector.smali
.class public final Lcom/google/android/gms/common/api/internal/BackgroundDetector;
.super Ljava/lang/Object;
# interfaces
.implements Landroid/app/Application$ActivityLifecycleCallbacks;
.implements Landroid/content/ComponentCallbacks2;
# annotations
.annotation build Lcom/google/android/gms/common/annotation/KeepForSdk;
.end annotation
# static fields
.field private static final zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
# instance fields
.field private final zzen:Ljava/util/concurrent/atomic/AtomicBoolean;
.field private final zzeo:Ljava/util/concurrent/atomic/AtomicBoolean;
.field private final zzep:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList",
"<",
"Lcom/google/android/gms/common/api/internal/BackgroundDetector$BackgroundStateChangeListener;",
">;"
}
.end annotation
.end field
.field private zzeq:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
new-instance v0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;
invoke-direct {v0}, Lcom/google/android/gms/common/api/internal/BackgroundDetector;-><init>()V
sput-object v0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
return-void
.end method
.method private constructor <init>()V
.registers 2
.annotation build Lcom/google/android/gms/common/annotation/KeepForSdk;
.end annotation
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>()V
iput-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzen:Ljava/util/concurrent/atomic/AtomicBoolean;
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>()V
iput-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzeo:Ljava/util/concurrent/atomic/AtomicBoolean;
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzep:Ljava/util/ArrayList;
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzeq:Z
return-void
.end method
.method public static getInstance()Lcom/google/android/gms/common/api/internal/BackgroundDetector;
.registers 1
.annotation build Lcom/google/android/gms/common/annotation/KeepForSdk;
.end annotation
sget-object v0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
return-object v0
.end method
.method public static initialize(Landroid/app/Application;)V
.registers 4
.annotation build Lcom/google/android/gms/common/annotation/KeepForSdk;
.end annotation
sget-object v1, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
monitor-enter v1
:try_start_3
sget-object v0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
iget-boolean v0, v0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzeq:Z
if-nez v0, :cond_18
sget-object v0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
invoke-virtual {p0, v0}, Landroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
sget-object v0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
invoke-virtual {p0, v0}, Landroid/app/Application;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V
sget-object v0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
const/4 v2, 0x1
iput-boolean v2, v0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzeq:Z
:cond_18
monitor-exit v1
return-void
:catchall_1a
move-exception v0
monitor-exit v1
:try_end_1c
.catchall {:try_start_3 .. :try_end_1c} :catchall_1a
throw v0
.end method
.method private final onBackgroundStateChanged(Z)V
.registers 7
sget-object v3, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
monitor-enter v3
:try_start_3
iget-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzep:Ljava/util/ArrayList;
check-cast v0, Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v4
const/4 v1, 0x0
move v2, v1
:goto_d
if-ge v2, v4, :cond_1e
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v1
add-int/lit8 v2, v2, 0x1
check-cast v1, Lcom/google/android/gms/common/api/internal/BackgroundDetector$BackgroundStateChangeListener;
invoke-interface {v1, p1}, Lcom/google/android/gms/common/api/internal/BackgroundDetector$BackgroundStateChangeListener;->onBackgroundStateChanged(Z)V
goto :goto_d
:catchall_1b
move-exception v0
monitor-exit v3
:try_end_1d
.catchall {:try_start_3 .. :try_end_1d} :catchall_1b
throw v0
:cond_1e
:try_start_1e
monitor-exit v3
:try_end_1f
.catchall {:try_start_1e .. :try_end_1f} :catchall_1b
return-void
.end method
# virtual methods
.method public final addListener(Lcom/google/android/gms/common/api/internal/BackgroundDetector$BackgroundStateChangeListener;)V
.registers 4
.annotation build Lcom/google/android/gms/common/annotation/KeepForSdk;
.end annotation
sget-object v1, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzem:Lcom/google/android/gms/common/api/internal/BackgroundDetector;
monitor-enter v1
:try_start_3
iget-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzep:Ljava/util/ArrayList;
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
monitor-exit v1
return-void
:catchall_a
move-exception v0
monitor-exit v1
:try_end_c
.catchall {:try_start_3 .. :try_end_c} :catchall_a
throw v0
.end method
.method public final isInBackground()Z
.registers 2
.annotation build Lcom/google/android/gms/common/annotation/KeepForSdk;
.end annotation
iget-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzen:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
return v0
.end method
.method public final onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
.registers 7
const/4 v3, 0x1
const/4 v2, 0x0
iget-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzen:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0, v3, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z
move-result v0
iget-object v1, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzeo:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v1, v3}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
if-eqz v0, :cond_12
invoke-direct {p0, v2}, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->onBackgroundStateChanged(Z)V
:cond_12
return-void
.end method
.method public final onActivityDestroyed(Landroid/app/Activity;)V
.registers 2
return-void
.end method
.method public final onActivityPaused(Landroid/app/Activity;)V
.registers 2
return-void
.end method
.method public final onActivityResumed(Landroid/app/Activity;)V
.registers 6
const/4 v3, 0x1
const/4 v2, 0x0
iget-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzen:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0, v3, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z
move-result v0
iget-object v1, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzeo:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v1, v3}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
if-eqz v0, :cond_12
invoke-direct {p0, v2}, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->onBackgroundStateChanged(Z)V
:cond_12
return-void
.end method
.method public final onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V
.registers 3
return-void
.end method
.method public final onActivityStarted(Landroid/app/Activity;)V
.registers 2
return-void
.end method
.method public final onActivityStopped(Landroid/app/Activity;)V
.registers 2
return-void
.end method
.method public final onConfigurationChanged(Landroid/content/res/Configuration;)V
.registers 2
return-void
.end method
.method public final onLowMemory()V
.registers 1
return-void
.end method
.method public final onTrimMemory(I)V
.registers 5
const/4 v2, 0x1
const/16 v0, 0x14
if-ne p1, v0, :cond_16
iget-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzen:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v1, 0x0
invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z
move-result v0
if-eqz v0, :cond_16
iget-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzeo:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
invoke-direct {p0, v2}, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->onBackgroundStateChanged(Z)V
:cond_16
return-void
.end method
.method public final readCurrentStateIfPossible(Z)Z
.registers 5
.annotation build Landroid/annotation/TargetApi;
value = 0x10
.end annotation
.annotation build Lcom/google/android/gms/common/annotation/KeepForSdk;
.end annotation
const/4 v2, 0x1
iget-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzeo:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
if-nez v0, :cond_2a
invoke-static {}, Lcom/google/android/gms/common/util/PlatformVersion;->isAtLeastJellyBean()Z
move-result v0
if-eqz v0, :cond_2e
new-instance v0, Landroid/app/ActivityManager$RunningAppProcessInfo;
invoke-direct {v0}, Landroid/app/ActivityManager$RunningAppProcessInfo;-><init>()V
invoke-static {v0}, Landroid/app/ActivityManager;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
iget-object v1, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzeo:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->getAndSet(Z)Z
move-result v1
if-nez v1, :cond_2a
iget v0, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I
const/16 v1, 0x64
if-le v0, v1, :cond_2a
iget-object v0, p0, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->zzen:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
:cond_2a
invoke-virtual {p0}, Lcom/google/android/gms/common/api/internal/BackgroundDetector;->isInBackground()Z
move-result p1
:cond_2e
return p1
.end method