.class public Landroidx/work/impl/Schedulers; .super Ljava/lang/Object; .source "Schedulers.java" # static fields .field public static final GCM_SCHEDULER:Ljava/lang/String; = "androidx.work.impl.background.gcm.GcmScheduler" .field private static final TAG:Ljava/lang/String; # direct methods .method static constructor ()V .locals 1 const-string v0, "Schedulers" .line 53 invoke-static {v0}, Landroidx/work/Logger;->tagWithPrefix(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 sput-object v0, Landroidx/work/impl/Schedulers;->TAG:Ljava/lang/String; return-void .end method .method private constructor ()V .locals 0 .line 186 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method static createBestAvailableBackgroundScheduler(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;)Landroidx/work/impl/Scheduler; .locals 1 .annotation system Ldalvik/annotation/MethodParameters; accessFlags = { 0x0, 0x0, 0x0 } names = { "context", "workDatabase", "configuration" } .end annotation .line 157 new-instance v0, Landroidx/work/impl/background/systemjob/SystemJobScheduler; invoke-direct {v0, p0, p1, p2}, Landroidx/work/impl/background/systemjob/SystemJobScheduler;->(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;)V .line 158 const-class p1, Landroidx/work/impl/background/systemjob/SystemJobService; const/4 p2, 0x1 invoke-static {p0, p1, p2}, Landroidx/work/impl/utils/PackageManagerHelper;->setComponentEnabled(Landroid/content/Context;Ljava/lang/Class;Z)V .line 159 invoke-static {}, Landroidx/work/Logger;->get()Landroidx/work/Logger; move-result-object p0 sget-object p1, Landroidx/work/impl/Schedulers;->TAG:Ljava/lang/String; const-string p2, "Created SystemJobScheduler and enabled SystemJobService" invoke-virtual {p0, p1, p2}, Landroidx/work/Logger;->debug(Ljava/lang/String;Ljava/lang/String;)V return-object v0 .end method .method static synthetic lambda$registerRescheduling$0(Ljava/util/List;Landroidx/work/impl/model/WorkGenerationalId;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;)V .locals 3 .line 73 invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v0 :goto_0 invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_0 invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 check-cast v1, Landroidx/work/impl/Scheduler; .line 74 invoke-virtual {p1}, Landroidx/work/impl/model/WorkGenerationalId;->getWorkSpecId()Ljava/lang/String; move-result-object v2 invoke-interface {v1, v2}, Landroidx/work/impl/Scheduler;->cancel(Ljava/lang/String;)V goto :goto_0 .line 76 :cond_0 invoke-static {p2, p3, p0}, Landroidx/work/impl/Schedulers;->schedule(Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;Ljava/util/List;)V return-void .end method .method static synthetic lambda$registerRescheduling$1(Ljava/util/concurrent/Executor;Ljava/util/List;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/model/WorkGenerationalId;Z)V .locals 0 .line 65 new-instance p5, Landroidx/work/impl/Schedulers$$ExternalSyntheticLambda0; invoke-direct {p5, p1, p4, p2, p3}, Landroidx/work/impl/Schedulers$$ExternalSyntheticLambda0;->(Ljava/util/List;Landroidx/work/impl/model/WorkGenerationalId;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;)V invoke-interface {p0, p5}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V return-void .end method .method private static markScheduled(Landroidx/work/impl/model/WorkSpecDao;Landroidx/work/Clock;Ljava/util/List;)V .locals 2 .annotation system Ldalvik/annotation/MethodParameters; accessFlags = { 0x0, 0x0, 0x0 } names = { "dao", "clock", "workSpecs" } .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroidx/work/impl/model/WorkSpecDao;", "Landroidx/work/Clock;", "Ljava/util/List<", "Landroidx/work/impl/model/WorkSpec;", ">;)V" } .end annotation .line 190 invoke-interface {p2}, Ljava/util/List;->size()I move-result v0 if-lez v0, :cond_0 .line 191 invoke-interface {p1}, Landroidx/work/Clock;->currentTimeMillis()J move-result-wide v0 .line 196 invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object p1 :goto_0 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result p2 if-eqz p2, :cond_0 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object p2 check-cast p2, Landroidx/work/impl/model/WorkSpec; .line 197 iget-object p2, p2, Landroidx/work/impl/model/WorkSpec;->id:Ljava/lang/String; invoke-interface {p0, p2, v0, v1}, Landroidx/work/impl/model/WorkSpecDao;->markWorkSpecScheduled(Ljava/lang/String;J)I goto :goto_0 :cond_0 return-void .end method .method public static registerRescheduling(Ljava/util/List;Landroidx/work/impl/Processor;Ljava/util/concurrent/Executor;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;)V .locals 1 .annotation system Ldalvik/annotation/MethodParameters; accessFlags = { 0x0, 0x0, 0x0, 0x0, 0x0 } names = { "schedulers", "processor", "executor", "workDatabase", "configuration" } .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/List<", "Landroidx/work/impl/Scheduler;", ">;", "Landroidx/work/impl/Processor;", "Ljava/util/concurrent/Executor;", "Landroidx/work/impl/WorkDatabase;", "Landroidx/work/Configuration;", ")V" } .end annotation .line 64 new-instance v0, Landroidx/work/impl/Schedulers$$ExternalSyntheticLambda1; invoke-direct {v0, p2, p0, p4, p3}, Landroidx/work/impl/Schedulers$$ExternalSyntheticLambda1;->(Ljava/util/concurrent/Executor;Ljava/util/List;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;)V invoke-virtual {p1, v0}, Landroidx/work/impl/Processor;->addExecutionListener(Landroidx/work/impl/ExecutionListener;)V return-void .end method .method public static schedule(Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;Ljava/util/List;)V .locals 3 .annotation system Ldalvik/annotation/MethodParameters; accessFlags = { 0x0, 0x0, 0x0 } names = { "configuration", "workDatabase", "schedulers" } .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroidx/work/Configuration;", "Landroidx/work/impl/WorkDatabase;", "Ljava/util/List<", "Landroidx/work/impl/Scheduler;", ">;)V" } .end annotation if-eqz p2, :cond_6 .line 91 invoke-interface {p2}, Ljava/util/List;->size()I move-result v0 if-nez v0, :cond_0 goto/16 :goto_2 .line 95 :cond_0 invoke-virtual {p1}, Landroidx/work/impl/WorkDatabase;->workSpecDao()Landroidx/work/impl/model/WorkSpecDao; move-result-object v0 .line 99 invoke-virtual {p1}, Landroidx/work/impl/WorkDatabase;->beginTransaction()V .line 103 :try_start_0 invoke-interface {v0}, Landroidx/work/impl/model/WorkSpecDao;->getEligibleWorkForSchedulingWithContentUris()Ljava/util/List; move-result-object v1 .line 104 invoke-virtual {p0}, Landroidx/work/Configuration;->getClock()Landroidx/work/Clock; move-result-object v2 invoke-static {v0, v2, v1}, Landroidx/work/impl/Schedulers;->markScheduled(Landroidx/work/impl/model/WorkSpecDao;Landroidx/work/Clock;Ljava/util/List;)V .line 109 invoke-virtual {p0}, Landroidx/work/Configuration;->getMaxSchedulerLimit()I move-result v2 .line 108 invoke-interface {v0, v2}, Landroidx/work/impl/model/WorkSpecDao;->getEligibleWorkForScheduling(I)Ljava/util/List; move-result-object v2 .line 110 invoke-virtual {p0}, Landroidx/work/Configuration;->getClock()Landroidx/work/Clock; move-result-object p0 invoke-static {v0, p0, v2}, Landroidx/work/impl/Schedulers;->markScheduled(Landroidx/work/impl/model/WorkSpecDao;Landroidx/work/Clock;Ljava/util/List;)V if-eqz v1, :cond_1 .line 112 invoke-interface {v2, v1}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z :cond_1 const/16 p0, 0xc8 .line 116 invoke-interface {v0, p0}, Landroidx/work/impl/model/WorkSpecDao;->getAllEligibleWorkSpecsForScheduling(I)Ljava/util/List; move-result-object p0 .line 118 invoke-virtual {p1}, Landroidx/work/impl/WorkDatabase;->setTransactionSuccessful()V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 120 invoke-virtual {p1}, Landroidx/work/impl/WorkDatabase;->endTransaction()V .line 123 invoke-interface {v2}, Ljava/util/List;->size()I move-result p1 if-lez p1, :cond_3 .line 126 invoke-interface {v2}, Ljava/util/List;->size()I move-result p1 new-array p1, p1, [Landroidx/work/impl/model/WorkSpec; .line 128 invoke-interface {v2, p1}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; move-result-object p1 check-cast p1, [Landroidx/work/impl/model/WorkSpec; .line 131 invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v0 :cond_2 :goto_0 invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_3 invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 check-cast v1, Landroidx/work/impl/Scheduler; .line 132 invoke-interface {v1}, Landroidx/work/impl/Scheduler;->hasLimitedSchedulingSlots()Z move-result v2 if-eqz v2, :cond_2 .line 133 invoke-interface {v1, p1}, Landroidx/work/impl/Scheduler;->schedule([Landroidx/work/impl/model/WorkSpec;)V goto :goto_0 .line 138 :cond_3 invoke-interface {p0}, Ljava/util/List;->size()I move-result p1 if-lez p1, :cond_5 .line 139 invoke-interface {p0}, Ljava/util/List;->size()I move-result p1 new-array p1, p1, [Landroidx/work/impl/model/WorkSpec; .line 140 invoke-interface {p0, p1}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; move-result-object p0 check-cast p0, [Landroidx/work/impl/model/WorkSpec; .line 142 invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object p1 :cond_4 :goto_1 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result p2 if-eqz p2, :cond_5 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object p2 check-cast p2, Landroidx/work/impl/Scheduler; .line 143 invoke-interface {p2}, Landroidx/work/impl/Scheduler;->hasLimitedSchedulingSlots()Z move-result v0 if-nez v0, :cond_4 .line 144 invoke-interface {p2, p0}, Landroidx/work/impl/Scheduler;->schedule([Landroidx/work/impl/model/WorkSpec;)V goto :goto_1 :cond_5 return-void :catchall_0 move-exception p0 .line 120 invoke-virtual {p1}, Landroidx/work/impl/WorkDatabase;->endTransaction()V .line 121 throw p0 :cond_6 :goto_2 return-void .end method .method private static tryCreateGcmBasedScheduler(Landroid/content/Context;Landroidx/work/Clock;)Landroidx/work/impl/Scheduler; .locals 4 .annotation system Ldalvik/annotation/MethodParameters; accessFlags = { 0x0, 0x0 } names = { "context", "clock" } .end annotation :try_start_0 const-string v0, "androidx.work.impl.background.gcm.GcmScheduler" .line 174 invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; move-result-object v0 const/4 v1, 0x2 new-array v1, v1, [Ljava/lang/Class; .line 175 const-class v2, Landroid/content/Context; const/4 v3, 0x0 aput-object v2, v1, v3 const-class v2, Landroidx/work/Clock; const/4 v3, 0x1 aput-object v2, v1, v3 .line 176 invoke-virtual {v0, v1}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; move-result-object v0 filled-new-array {p0, p1}, [Ljava/lang/Object; move-result-object p0 .line 177 invoke-virtual {v0, p0}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object; move-result-object p0 check-cast p0, Landroidx/work/impl/Scheduler; .line 178 invoke-static {}, Landroidx/work/Logger;->get()Landroidx/work/Logger; move-result-object p1 sget-object v0, Landroidx/work/impl/Schedulers;->TAG:Ljava/lang/String; const-string v1, "Created androidx.work.impl.background.gcm.GcmScheduler" invoke-virtual {p1, v0, v1}, Landroidx/work/Logger;->debug(Ljava/lang/String;Ljava/lang/String;)V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 return-object p0 :catchall_0 move-exception p0 .line 181 invoke-static {}, Landroidx/work/Logger;->get()Landroidx/work/Logger; move-result-object p1 sget-object v0, Landroidx/work/impl/Schedulers;->TAG:Ljava/lang/String; const-string v1, "Unable to create GCM Scheduler" invoke-virtual {p1, v0, v1, p0}, Landroidx/work/Logger;->debug(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V const/4 p0, 0x0 return-object p0 .end method