.class Landroidx/work/impl/background/systemalarm/WorkTimer; .super Ljava/lang/Object; .source "WorkTimer.java" # annotations .annotation build Landroidx/annotation/RestrictTo; value = { .enum Landroidx/annotation/RestrictTo$Scope;->LIBRARY_GROUP:Landroidx/annotation/RestrictTo$Scope; } .end annotation .annotation system Ldalvik/annotation/MemberClasses; value = { Landroidx/work/impl/background/systemalarm/WorkTimer$TimeLimitExceededListener;, Landroidx/work/impl/background/systemalarm/WorkTimer$WorkTimerRunnable; } .end annotation # static fields .field private static final TAG:Ljava/lang/String; = "WorkTimer" # instance fields .field private final mExecutorService:Ljava/util/concurrent/ScheduledExecutorService; .field final mListeners:Ljava/util/Map; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Map<", "Ljava/lang/String;", "Landroidx/work/impl/background/systemalarm/WorkTimer$TimeLimitExceededListener;", ">;" } .end annotation .end field .field final mLock:Ljava/lang/Object; .field final mTimerMap:Ljava/util/Map; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Map<", "Ljava/lang/String;", "Landroidx/work/impl/background/systemalarm/WorkTimer$WorkTimerRunnable;", ">;" } .end annotation .end field # direct methods .method constructor ()V .locals 1 invoke-direct {p0}, Ljava/lang/Object;->()V new-instance v0, Ljava/util/HashMap; invoke-direct {v0}, Ljava/util/HashMap;->()V iput-object v0, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mTimerMap:Ljava/util/Map; new-instance v0, Ljava/util/HashMap; invoke-direct {v0}, Ljava/util/HashMap;->()V iput-object v0, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mListeners:Ljava/util/Map; new-instance v0, Ljava/lang/Object; invoke-direct {v0}, Ljava/lang/Object;->()V iput-object v0, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mLock:Ljava/lang/Object; invoke-static {}, Ljava/util/concurrent/Executors;->newSingleThreadScheduledExecutor()Ljava/util/concurrent/ScheduledExecutorService; move-result-object v0 iput-object v0, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mExecutorService:Ljava/util/concurrent/ScheduledExecutorService; return-void .end method # virtual methods .method declared-synchronized getListeners()Ljava/util/Map; .locals 1 .annotation build Landroidx/annotation/VisibleForTesting; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Map<", "Ljava/lang/String;", "Landroidx/work/impl/background/systemalarm/WorkTimer$TimeLimitExceededListener;", ">;" } .end annotation monitor-enter p0 :try_start_0 iget-object v0, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mListeners:Ljava/util/Map; :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 monitor-exit p0 return-object v0 :catchall_0 move-exception v0 monitor-exit p0 throw v0 .end method .method declared-synchronized getTimerMap()Ljava/util/Map; .locals 1 .annotation build Landroidx/annotation/VisibleForTesting; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Map<", "Ljava/lang/String;", "Landroidx/work/impl/background/systemalarm/WorkTimer$WorkTimerRunnable;", ">;" } .end annotation monitor-enter p0 :try_start_0 iget-object v0, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mTimerMap:Ljava/util/Map; :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 monitor-exit p0 return-object v0 :catchall_0 move-exception v0 monitor-exit p0 throw v0 .end method .method startTimer(Ljava/lang/String;JLandroidx/work/impl/background/systemalarm/WorkTimer$TimeLimitExceededListener;)V .locals 5 .param p1 # Ljava/lang/String; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p4 # Landroidx/work/impl/background/systemalarm/WorkTimer$TimeLimitExceededListener; .annotation build Landroidx/annotation/NonNull; .end annotation .end param iget-object v0, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mLock:Ljava/lang/Object; monitor-enter v0 :try_start_0 const-string v1, "WorkTimer" const-string v2, "Starting timer for %s" const/4 v3, 0x1 new-array v3, v3, [Ljava/lang/Object; const/4 v4, 0x0 aput-object p1, v3, v4 invoke-static {v2, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; move-result-object v2 new-array v3, v4, [Ljava/lang/Throwable; invoke-static {v1, v2, v3}, Landroidx/work/Logger;->debug(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Throwable;)V invoke-virtual {p0, p1}, Landroidx/work/impl/background/systemalarm/WorkTimer;->stopTimer(Ljava/lang/String;)V new-instance v1, Landroidx/work/impl/background/systemalarm/WorkTimer$WorkTimerRunnable; invoke-direct {v1, p0, p1}, Landroidx/work/impl/background/systemalarm/WorkTimer$WorkTimerRunnable;->(Landroidx/work/impl/background/systemalarm/WorkTimer;Ljava/lang/String;)V iget-object v2, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mTimerMap:Ljava/util/Map; invoke-interface {v2, p1, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; iget-object v2, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mListeners:Ljava/util/Map; invoke-interface {v2, p1, p4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; iget-object p1, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mExecutorService:Ljava/util/concurrent/ScheduledExecutorService; sget-object p4, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; invoke-interface {p1, v1, p2, p3, p4}, Ljava/util/concurrent/ScheduledExecutorService;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; monitor-exit v0 return-void :catchall_0 move-exception p1 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p1 .end method .method stopTimer(Ljava/lang/String;)V .locals 5 .param p1 # Ljava/lang/String; .annotation build Landroidx/annotation/NonNull; .end annotation .end param iget-object v0, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mLock:Ljava/lang/Object; monitor-enter v0 :try_start_0 iget-object v1, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mTimerMap:Ljava/util/Map; invoke-interface {v1, p1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v1 check-cast v1, Landroidx/work/impl/background/systemalarm/WorkTimer$WorkTimerRunnable; if-eqz v1, :cond_0 const-string v1, "WorkTimer" const-string v2, "Stopping timer for %s" const/4 v3, 0x1 new-array v3, v3, [Ljava/lang/Object; const/4 v4, 0x0 aput-object p1, v3, v4 invoke-static {v2, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; move-result-object v2 new-array v3, v4, [Ljava/lang/Throwable; invoke-static {v1, v2, v3}, Landroidx/work/Logger;->debug(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Throwable;)V iget-object v1, p0, Landroidx/work/impl/background/systemalarm/WorkTimer;->mListeners:Ljava/util/Map; invoke-interface {v1, p1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object; :cond_0 monitor-exit v0 return-void :catchall_0 move-exception p1 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p1 .end method