.class Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl; .super Landroidx/core/app/FrameMetricsAggregator$FrameMetricsBaseImpl; .source "FrameMetricsAggregator.java" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Landroidx/core/app/FrameMetricsAggregator; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0xa name = "FrameMetricsApi24Impl" .end annotation # static fields .field private static final NANOS_PER_MS:I = 0xf4240 .field private static final NANOS_ROUNDING_VALUE:I = 0x7a120 .field private static sHandler:Landroid/os/Handler; .field private static sHandlerThread:Landroid/os/HandlerThread; # instance fields .field private mActivities:Ljava/util/ArrayList; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/ArrayList<", "Ljava/lang/ref/WeakReference<", "Landroid/app/Activity;", ">;>;" } .end annotation .end field .field mListener:Landroid/view/Window$OnFrameMetricsAvailableListener; .field mMetrics:[Landroid/util/SparseIntArray; .field mTrackingFlags:I # direct methods .method static constructor ()V .registers 0 return-void .end method .method constructor (I)V .registers 3 .line 347 invoke-direct {p0}, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsBaseImpl;->()V const/16 v0, 0x9 .line 342 new-array v0, v0, [Landroid/util/SparseIntArray; iput-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mMetrics:[Landroid/util/SparseIntArray; .line 343 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V iput-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mActivities:Ljava/util/ArrayList; .line 351 new-instance v0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl$1; invoke-direct {v0, p0}, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl$1;->(Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;)V iput-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mListener:Landroid/view/Window$OnFrameMetricsAvailableListener; .line 348 iput p1, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mTrackingFlags:I return-void .end method # virtual methods .method public add(Landroid/app/Activity;)V .registers 6 .line 414 sget-object v0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->sHandlerThread:Landroid/os/HandlerThread; if-nez v0, :cond_1d .line 415 new-instance v0, Landroid/os/HandlerThread; const-string v1, "FrameMetricsAggregator" invoke-direct {v0, v1}, Landroid/os/HandlerThread;->(Ljava/lang/String;)V sput-object v0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->sHandlerThread:Landroid/os/HandlerThread; .line 416 invoke-virtual {v0}, Landroid/os/HandlerThread;->start()V .line 417 new-instance v0, Landroid/os/Handler; sget-object v1, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->sHandlerThread:Landroid/os/HandlerThread; invoke-virtual {v1}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper; move-result-object v1 invoke-direct {v0, v1}, Landroid/os/Handler;->(Landroid/os/Looper;)V sput-object v0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->sHandler:Landroid/os/Handler; :cond_1d const/4 v0, 0x0 :goto_1e const/16 v1, 0x8 if-gt v0, v1, :cond_39 .line 420 iget-object v1, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mMetrics:[Landroid/util/SparseIntArray; aget-object v2, v1, v0 if-nez v2, :cond_36 iget v2, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mTrackingFlags:I const/4 v3, 0x1 shl-int/2addr v3, v0 and-int/2addr v2, v3 if-eqz v2, :cond_36 .line 421 new-instance v2, Landroid/util/SparseIntArray; invoke-direct {v2}, Landroid/util/SparseIntArray;->()V aput-object v2, v1, v0 :cond_36 add-int/lit8 v0, v0, 0x1 goto :goto_1e .line 424 :cond_39 invoke-virtual {p1}, Landroid/app/Activity;->getWindow()Landroid/view/Window; move-result-object v0 iget-object v1, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mListener:Landroid/view/Window$OnFrameMetricsAvailableListener; sget-object v2, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->sHandler:Landroid/os/Handler; invoke-virtual {v0, v1, v2}, Landroid/view/Window;->addOnFrameMetricsAvailableListener(Landroid/view/Window$OnFrameMetricsAvailableListener;Landroid/os/Handler;)V .line 425 iget-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mActivities:Ljava/util/ArrayList; new-instance v1, Ljava/lang/ref/WeakReference; invoke-direct {v1, p1}, Ljava/lang/ref/WeakReference;->(Ljava/lang/Object;)V invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z return-void .end method .method addDurationItem(Landroid/util/SparseIntArray;J)V .registers 8 if-eqz p1, :cond_1a const-wide/32 v0, 0x7a120 add-long/2addr v0, p2 const-wide/32 v2, 0xf4240 .line 403 div-long/2addr v0, v2 long-to-int v0, v0 const-wide/16 v1, 0x0 cmp-long p2, p2, v1 if-ltz p2, :cond_1a .line 406 invoke-virtual {p1, v0}, Landroid/util/SparseIntArray;->get(I)I move-result p2 add-int/lit8 p2, p2, 0x1 .line 407 invoke-virtual {p1, v0, p2}, Landroid/util/SparseIntArray;->put(II)V :cond_1a return-void .end method .method public getMetrics()[Landroid/util/SparseIntArray; .registers 2 .line 456 iget-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mMetrics:[Landroid/util/SparseIntArray; return-object v0 .end method .method public remove(Landroid/app/Activity;)[Landroid/util/SparseIntArray; .registers 5 .line 430 iget-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mActivities:Ljava/util/ArrayList; invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; move-result-object v0 :cond_6 invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_1d invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 check-cast v1, Ljava/lang/ref/WeakReference; .line 431 invoke-virtual {v1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object; move-result-object v2 if-ne v2, p1, :cond_6 .line 432 iget-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mActivities:Ljava/util/ArrayList; invoke-virtual {v0, v1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z .line 436 :cond_1d invoke-virtual {p1}, Landroid/app/Activity;->getWindow()Landroid/view/Window; move-result-object p1 iget-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mListener:Landroid/view/Window$OnFrameMetricsAvailableListener; invoke-virtual {p1, v0}, Landroid/view/Window;->removeOnFrameMetricsAvailableListener(Landroid/view/Window$OnFrameMetricsAvailableListener;)V .line 437 iget-object p1, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mMetrics:[Landroid/util/SparseIntArray; return-object p1 .end method .method public reset()[Landroid/util/SparseIntArray; .registers 3 .line 461 iget-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mMetrics:[Landroid/util/SparseIntArray; const/16 v1, 0x9 .line 462 new-array v1, v1, [Landroid/util/SparseIntArray; iput-object v1, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mMetrics:[Landroid/util/SparseIntArray; return-object v0 .end method .method public stop()[Landroid/util/SparseIntArray; .registers 4 .line 442 iget-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mActivities:Ljava/util/ArrayList; invoke-virtual {v0}, Ljava/util/ArrayList;->size()I move-result v0 add-int/lit8 v0, v0, -0x1 :goto_8 if-ltz v0, :cond_2f .line 444 iget-object v1, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mActivities:Ljava/util/ArrayList; invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; move-result-object v1 check-cast v1, Ljava/lang/ref/WeakReference; .line 445 invoke-virtual {v1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object; move-result-object v2 check-cast v2, Landroid/app/Activity; .line 446 invoke-virtual {v1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object; move-result-object v1 if-eqz v1, :cond_2c .line 447 invoke-virtual {v2}, Landroid/app/Activity;->getWindow()Landroid/view/Window; move-result-object v1 iget-object v2, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mListener:Landroid/view/Window$OnFrameMetricsAvailableListener; invoke-virtual {v1, v2}, Landroid/view/Window;->removeOnFrameMetricsAvailableListener(Landroid/view/Window$OnFrameMetricsAvailableListener;)V .line 448 iget-object v1, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mActivities:Ljava/util/ArrayList; invoke-virtual {v1, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object; :cond_2c add-int/lit8 v0, v0, -0x1 goto :goto_8 .line 451 :cond_2f iget-object v0, p0, Landroidx/core/app/FrameMetricsAggregator$FrameMetricsApi24Impl;->mMetrics:[Landroid/util/SparseIntArray; return-object v0 .end method