JobService.smali
.class public abstract Lcom/firebase/jobdispatcher/JobService;
.super Landroid/app/Service;
.source "JobService.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/firebase/jobdispatcher/JobService$JobCallback;,
Lcom/firebase/jobdispatcher/JobService$JobResult;
}
.end annotation
# static fields
.field public static final ACTION_EXECUTE:Ljava/lang/String; = "com.firebase.jobdispatcher.ACTION_EXECUTE"
.annotation build Landroidx/annotation/VisibleForTesting;
.end annotation
.end field
.field public static final RESULT_FAIL_NORETRY:I = 0x2
.field public static final RESULT_FAIL_RETRY:I = 0x1
.field public static final RESULT_SUCCESS:I = 0x0
.field public static final TAG:Ljava/lang/String; = "FJD.JobService"
.field public static final mainHandler:Landroid/os/Handler;
# instance fields
.field public final binder:Lcom/firebase/jobdispatcher/IRemoteJobService$Stub;
.field public final runningJobs:Landroidx/collection/SimpleArrayMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/collection/SimpleArrayMap<",
"Ljava/lang/String;",
"Lcom/firebase/jobdispatcher/JobService$JobCallback;",
">;"
}
.end annotation
.end field
# direct methods
.method public static constructor <clinit>()V
.registers 2
new-instance v0, Landroid/os/Handler;
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
move-result-object v1
invoke-direct {v0, v1}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
sput-object v0, Lcom/firebase/jobdispatcher/JobService;->mainHandler:Landroid/os/Handler;
return-void
.end method
.method public constructor <init>()V
.registers 3
invoke-direct {p0}, Landroid/app/Service;-><init>()V
new-instance v0, Landroidx/collection/SimpleArrayMap;
const/4 v1, 0x1
invoke-direct {v0, v1}, Landroidx/collection/SimpleArrayMap;-><init>(I)V
iput-object v0, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
new-instance v0, Lcom/firebase/jobdispatcher/JobService$1;
invoke-direct {v0, p0}, Lcom/firebase/jobdispatcher/JobService$1;-><init>(Lcom/firebase/jobdispatcher/JobService;)V
iput-object v0, p0, Lcom/firebase/jobdispatcher/JobService;->binder:Lcom/firebase/jobdispatcher/IRemoteJobService$Stub;
return-void
.end method
.method public static synthetic access$100(Lcom/firebase/jobdispatcher/JobService;)Landroidx/collection/SimpleArrayMap;
.registers 1
iget-object p0, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
return-object p0
.end method
# virtual methods
.method public final dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
.registers 4
invoke-super {p0, p1, p2, p3}, Landroid/app/Service;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
return-void
.end method
.method public final jobFinished(Lcom/firebase/jobdispatcher/JobParameters;Z)V
.registers 5
.param p1 # Lcom/firebase/jobdispatcher/JobParameters;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
if-nez p1, :cond_a
const-string p1, "FJD.JobService"
const-string p2, "jobFinished called with a null JobParameters"
invoke-static {p1, p2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
return-void
:cond_a
iget-object v0, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
monitor-enter v0
:try_start_d
iget-object v1, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
invoke-interface {p1}, Lcom/firebase/jobdispatcher/JobParameters;->getTag()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Landroidx/collection/SimpleArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/firebase/jobdispatcher/JobService$JobCallback;
if-eqz p1, :cond_23
if-eqz p2, :cond_1f
const/4 p2, 0x1
goto :goto_20
:cond_1f
const/4 p2, 0x0
:goto_20
invoke-virtual {p1, p2}, Lcom/firebase/jobdispatcher/JobService$JobCallback;->sendResult(I)V
:cond_23
monitor-exit v0
return-void
:catchall_25
move-exception p1
monitor-exit v0
:try_end_27
.catchall {:try_start_d .. :try_end_27} :catchall_25
throw p1
.end method
.method public final onBind(Landroid/content/Intent;)Landroid/os/IBinder;
.registers 2
.annotation build Landroidx/annotation/Nullable;
.end annotation
iget-object p1, p0, Lcom/firebase/jobdispatcher/JobService;->binder:Lcom/firebase/jobdispatcher/IRemoteJobService$Stub;
return-object p1
.end method
.method public final onConfigurationChanged(Landroid/content/res/Configuration;)V
.registers 2
invoke-super {p0, p1}, Landroid/app/Service;->onConfigurationChanged(Landroid/content/res/Configuration;)V
return-void
.end method
.method public final onRebind(Landroid/content/Intent;)V
.registers 2
invoke-super {p0, p1}, Landroid/app/Service;->onRebind(Landroid/content/Intent;)V
return-void
.end method
.method public final onStart(Landroid/content/Intent;I)V
.registers 3
return-void
.end method
.method public final onStartCommand(Landroid/content/Intent;II)I
.registers 4
invoke-virtual {p0, p3}, Landroid/app/Service;->stopSelf(I)V
const/4 p1, 0x2
return p1
.end method
.method public abstract onStartJob(Lcom/firebase/jobdispatcher/JobParameters;)Z
.annotation build Landroidx/annotation/MainThread;
.end annotation
.end method
.method public abstract onStopJob(Lcom/firebase/jobdispatcher/JobParameters;)Z
.annotation build Landroidx/annotation/MainThread;
.end annotation
.end method
.method public final onTaskRemoved(Landroid/content/Intent;)V
.registers 2
invoke-super {p0, p1}, Landroid/app/Service;->onTaskRemoved(Landroid/content/Intent;)V
return-void
.end method
.method public final onUnbind(Landroid/content/Intent;)Z
.registers 7
.annotation build Landroidx/annotation/MainThread;
.end annotation
iget-object v0, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
monitor-enter v0
:try_start_3
iget-object v1, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
invoke-virtual {v1}, Landroidx/collection/SimpleArrayMap;->size()I
move-result v1
const/4 v2, 0x1
sub-int/2addr v1, v2
:goto_b
if-ltz v1, :cond_2e
iget-object v3, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
iget-object v4, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
invoke-virtual {v4, v1}, Landroidx/collection/SimpleArrayMap;->keyAt(I)Ljava/lang/Object;
move-result-object v4
invoke-virtual {v3, v4}, Landroidx/collection/SimpleArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/firebase/jobdispatcher/JobService$JobCallback;
if-eqz v3, :cond_2b
iget-object v4, v3, Lcom/firebase/jobdispatcher/JobService$JobCallback;->job:Lcom/firebase/jobdispatcher/JobParameters;
invoke-virtual {p0, v4}, Lcom/firebase/jobdispatcher/JobService;->onStopJob(Lcom/firebase/jobdispatcher/JobParameters;)Z
move-result v4
if-eqz v4, :cond_27
const/4 v4, 0x1
goto :goto_28
:cond_27
const/4 v4, 0x2
:goto_28
invoke-virtual {v3, v4}, Lcom/firebase/jobdispatcher/JobService$JobCallback;->sendResult(I)V
:cond_2b
add-int/lit8 v1, v1, -0x1
goto :goto_b
:cond_2e
monitor-exit v0
:try_end_2f
.catchall {:try_start_3 .. :try_end_2f} :catchall_34
invoke-super {p0, p1}, Landroid/app/Service;->onUnbind(Landroid/content/Intent;)Z
move-result p1
return p1
:catchall_34
move-exception p1
:try_start_35
monitor-exit v0
:try_end_36
.catchall {:try_start_35 .. :try_end_36} :catchall_34
goto :goto_38
:goto_37
throw p1
:goto_38
goto :goto_37
.end method
.method public start(Lcom/firebase/jobdispatcher/JobParameters;Lcom/firebase/jobdispatcher/IJobCallback;)V
.registers 8
iget-object v0, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
monitor-enter v0
:try_start_3
iget-object v1, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
invoke-interface {p1}, Lcom/firebase/jobdispatcher/JobParameters;->getTag()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Landroidx/collection/SimpleArrayMap;->containsKey(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_28
const-string p2, "FJD.JobService"
sget-object v1, Ljava/util/Locale;->US:Ljava/util/Locale;
const-string v2, "Job with tag = %s was already running."
const/4 v3, 0x1
new-array v3, v3, [Ljava/lang/Object;
const/4 v4, 0x0
invoke-interface {p1}, Lcom/firebase/jobdispatcher/JobParameters;->getTag()Ljava/lang/String;
move-result-object p1
aput-object p1, v3, v4
invoke-static {v1, v2, v3}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
invoke-static {p2, p1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
monitor-exit v0
return-void
:cond_28
iget-object v1, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
invoke-interface {p1}, Lcom/firebase/jobdispatcher/JobParameters;->getTag()Ljava/lang/String;
move-result-object v2
new-instance v3, Lcom/firebase/jobdispatcher/JobService$JobCallback;
const/4 v4, 0x0
invoke-direct {v3, p1, p2, v4}, Lcom/firebase/jobdispatcher/JobService$JobCallback;-><init>(Lcom/firebase/jobdispatcher/JobParameters;Lcom/firebase/jobdispatcher/IJobCallback;Lcom/firebase/jobdispatcher/JobService$1;)V
invoke-virtual {v1, v2, v3}, Landroidx/collection/SimpleArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
sget-object p2, Lcom/firebase/jobdispatcher/JobService;->mainHandler:Landroid/os/Handler;
new-instance v1, Lcom/firebase/jobdispatcher/JobService$2;
invoke-direct {v1, p0, p1}, Lcom/firebase/jobdispatcher/JobService$2;-><init>(Lcom/firebase/jobdispatcher/JobService;Lcom/firebase/jobdispatcher/JobParameters;)V
invoke-virtual {p2, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
monitor-exit v0
return-void
:catchall_43
move-exception p1
monitor-exit v0
:try_end_45
.catchall {:try_start_3 .. :try_end_45} :catchall_43
throw p1
.end method
.method public stop(Lcom/firebase/jobdispatcher/JobParameters;Z)V
.registers 7
iget-object v0, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
monitor-enter v0
:try_start_3
iget-object v1, p0, Lcom/firebase/jobdispatcher/JobService;->runningJobs:Landroidx/collection/SimpleArrayMap;
invoke-interface {p1}, Lcom/firebase/jobdispatcher/JobParameters;->getTag()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Landroidx/collection/SimpleArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/firebase/jobdispatcher/JobService$JobCallback;
if-nez v1, :cond_23
const-string p1, "FJD.JobService"
const/4 p2, 0x3
invoke-static {p1, p2}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
move-result p1
if-eqz p1, :cond_21
const-string p1, "FJD.JobService"
const-string p2, "Provided job has already been executed."
invoke-static {p1, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
:cond_21
monitor-exit v0
return-void
:cond_23
sget-object v2, Lcom/firebase/jobdispatcher/JobService;->mainHandler:Landroid/os/Handler;
new-instance v3, Lcom/firebase/jobdispatcher/JobService$3;
invoke-direct {v3, p0, p1, p2, v1}, Lcom/firebase/jobdispatcher/JobService$3;-><init>(Lcom/firebase/jobdispatcher/JobService;Lcom/firebase/jobdispatcher/JobParameters;ZLcom/firebase/jobdispatcher/JobService$JobCallback;)V
invoke-virtual {v2, v3}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
monitor-exit v0
return-void
:catchall_2f
move-exception p1
monitor-exit v0
:try_end_31
.catchall {:try_start_3 .. :try_end_31} :catchall_2f
throw p1
.end method