public class android.app.QueuedWork
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: android.app.QueuedWork
super_class: java.lang.Object
{
private static final java.lang.String LOG_TAG;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final boolean DEBUG;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final long DELAY;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 100
private static final long MAX_WAIT_TIME_MILLIS;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 512
private static final java.lang.Object sLock;
descriptor: Ljava/lang/Object;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static java.lang.Object sProcessingWork;
descriptor: Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final java.util.LinkedList<java.lang.Runnable> sFinishers;
descriptor: Ljava/util/LinkedList;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/LinkedList<Ljava/lang/Runnable;>;
RuntimeInvisibleAnnotations:
com.android.internal.annotations.GuardedBy(value = "sLock")
private static android.os.Handler sHandler;
descriptor: Landroid/os/Handler;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
RuntimeInvisibleAnnotations:
com.android.internal.annotations.GuardedBy(value = "sLock")
private static final java.util.LinkedList<java.lang.Runnable> sWork;
descriptor: Ljava/util/LinkedList;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/LinkedList<Ljava/lang/Runnable;>;
RuntimeInvisibleAnnotations:
com.android.internal.annotations.GuardedBy(value = "sLock")
private static boolean sCanDelay;
descriptor: Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
RuntimeInvisibleAnnotations:
com.android.internal.annotations.GuardedBy(value = "sLock")
private static final com.android.internal.util.ExponentiallyBucketedHistogram mWaitTimes;
descriptor: Lcom/android/internal/util/ExponentiallyBucketedHistogram;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
RuntimeInvisibleAnnotations:
com.android.internal.annotations.GuardedBy(value = "sLock")
private static int mNumWaits;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: ldc Landroid/app/QueuedWork;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
putstatic android.app.QueuedWork.LOG_TAG:Ljava/lang/String;
1: new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
2: new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putstatic android.app.QueuedWork.sProcessingWork:Ljava/lang/Object;
3: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putstatic android.app.QueuedWork.sFinishers:Ljava/util/LinkedList;
4: aconst_null
putstatic android.app.QueuedWork.sHandler:Landroid/os/Handler;
5: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putstatic android.app.QueuedWork.sWork:Ljava/util/LinkedList;
6: iconst_1
putstatic android.app.QueuedWork.sCanDelay:Z
7: new com.android.internal.util.ExponentiallyBucketedHistogram
dup
8: bipush 16
9: invokespecial com.android.internal.util.ExponentiallyBucketedHistogram.<init>:(I)V
putstatic android.app.QueuedWork.mWaitTimes:Lcom/android/internal/util/ExponentiallyBucketedHistogram;
10: iconst_0
putstatic android.app.QueuedWork.mNumWaits:I
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/app/QueuedWork;
private static android.os.Handler getHandler();
descriptor: ()Landroid/os/Handler;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=0
0: getstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
dup
astore 0
monitorenter
1: getstatic android.app.QueuedWork.sHandler:Landroid/os/Handler;
ifnonnull 7
2: new android.os.HandlerThread
dup
ldc "queued-work-looper"
3: bipush -2
4: invokespecial android.os.HandlerThread.<init>:(Ljava/lang/String;I)V
astore 1
start local 1 5: aload 1
invokevirtual android.os.HandlerThread.start:()V
6: new android.app.QueuedWork$QueuedWorkHandler
dup
aload 1
invokevirtual android.os.HandlerThread.getLooper:()Landroid/os/Looper;
invokespecial android.app.QueuedWork$QueuedWorkHandler.<init>:(Landroid/os/Looper;)V
putstatic android.app.QueuedWork.sHandler:Landroid/os/Handler;
end local 1 7: StackMap locals: java.lang.Object
StackMap stack:
getstatic android.app.QueuedWork.sHandler:Landroid/os/Handler;
aload 0
monitorexit
8: areturn
9: StackMap locals:
StackMap stack: java.lang.Throwable
aload 0
monitorexit
10: athrow
LocalVariableTable:
Start End Slot Name Signature
5 7 1 handlerThread Landroid/os/HandlerThread;
Exception table:
from to target type
1 8 9 any
9 10 9 any
public static void addFinisher(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: getstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: getstatic android.app.QueuedWork.sFinishers:Ljava/util/LinkedList;
aload 0
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
2: aload 1
monitorexit
3: goto 6
StackMap locals: java.lang.Runnable java.lang.Object
StackMap stack: java.lang.Throwable
4: aload 1
monitorexit
5: athrow
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 finisher Ljava/lang/Runnable;
Exception table:
from to target type
1 3 4 any
4 5 4 any
MethodParameters:
Name Flags
finisher
public static void removeFinisher(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: getstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: getstatic android.app.QueuedWork.sFinishers:Ljava/util/LinkedList;
aload 0
invokevirtual java.util.LinkedList.remove:(Ljava/lang/Object;)Z
pop
2: aload 1
monitorexit
3: goto 6
StackMap locals: java.lang.Runnable java.lang.Object
StackMap stack: java.lang.Throwable
4: aload 1
monitorexit
5: athrow
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 finisher Ljava/lang/Runnable;
Exception table:
from to target type
1 3 4 any
4 5 4 any
MethodParameters:
Name Flags
finisher
public static void waitToFinish();
descriptor: ()V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=8, args_size=0
0: invokestatic java.lang.System.currentTimeMillis:()J
lstore 0
start local 0 1: iconst_0
istore 2
start local 2 2: invokestatic android.app.QueuedWork.getHandler:()Landroid/os/Handler;
astore 3
start local 3 3: getstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
dup
astore 4
monitorenter
4: aload 3
iconst_1
invokevirtual android.os.Handler.hasMessages:(I)Z
ifeq 6
5: aload 3
iconst_1
invokevirtual android.os.Handler.removeMessages:(I)V
6: StackMap locals: long int android.os.Handler java.lang.Object
StackMap stack:
iconst_0
putstatic android.app.QueuedWork.sCanDelay:Z
7: aload 4
monitorexit
8: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
9: aload 4
monitorexit
10: athrow
11: StackMap locals:
StackMap stack:
invokestatic android.os.StrictMode.allowThreadDiskWrites:()Landroid/os/StrictMode$ThreadPolicy;
astore 4
start local 4 12: invokestatic android.app.QueuedWork.processPendingWork:()V
13: goto 17
StackMap locals: long int android.os.Handler android.os.StrictMode$ThreadPolicy
StackMap stack: java.lang.Throwable
14: astore 5
15: aload 4
invokestatic android.os.StrictMode.setThreadPolicy:(Landroid/os/StrictMode$ThreadPolicy;)V
16: aload 5
athrow
17: StackMap locals:
StackMap stack:
aload 4
invokestatic android.os.StrictMode.setThreadPolicy:(Landroid/os/StrictMode$ThreadPolicy;)V
18: StackMap locals:
StackMap stack:
getstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
dup
astore 6
monitorenter
19: getstatic android.app.QueuedWork.sFinishers:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.poll:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 5
start local 5 20: aload 6
monitorexit
21: goto 24
end local 5 StackMap locals: long int android.os.Handler android.os.StrictMode$ThreadPolicy top java.lang.Object
StackMap stack: java.lang.Throwable
22: aload 6
monitorexit
23: athrow
start local 5 24: StackMap locals: long int android.os.Handler android.os.StrictMode$ThreadPolicy java.lang.Runnable
StackMap stack:
aload 5
ifnonnull 26
25: goto 31
26: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.lang.Runnable.run:()V
end local 5 27: goto 18
28: StackMap locals: long int android.os.Handler android.os.StrictMode$ThreadPolicy
StackMap stack: java.lang.Throwable
astore 7
29: iconst_1
putstatic android.app.QueuedWork.sCanDelay:Z
30: aload 7
athrow
31: StackMap locals:
StackMap stack:
iconst_1
putstatic android.app.QueuedWork.sCanDelay:Z
32: getstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
dup
astore 5
monitorenter
33: invokestatic java.lang.System.currentTimeMillis:()J
lload 0
lsub
lstore 6
start local 6 34: lload 6
lconst_0
lcmp
ifgt 35
iload 2
ifeq 39
35: StackMap locals: java.lang.Object long
StackMap stack:
getstatic android.app.QueuedWork.mWaitTimes:Lcom/android/internal/util/ExponentiallyBucketedHistogram;
lload 6
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual java.lang.Long.intValue:()I
invokevirtual com.android.internal.util.ExponentiallyBucketedHistogram.add:(I)V
36: getstatic android.app.QueuedWork.mNumWaits:I
iconst_1
iadd
putstatic android.app.QueuedWork.mNumWaits:I
37: getstatic android.app.QueuedWork.mNumWaits:I
sipush 1024
irem
ifeq 38
lload 6
ldc 512
lcmp
ifle 39
38: StackMap locals:
StackMap stack:
getstatic android.app.QueuedWork.mWaitTimes:Lcom/android/internal/util/ExponentiallyBucketedHistogram;
getstatic android.app.QueuedWork.LOG_TAG:Ljava/lang/String;
ldc "waited: "
invokevirtual com.android.internal.util.ExponentiallyBucketedHistogram.log:(Ljava/lang/String;Ljava/lang/CharSequence;)V
end local 6 39: StackMap locals:
StackMap stack:
aload 5
monitorexit
40: goto 43
StackMap locals:
StackMap stack: java.lang.Throwable
41: aload 5
monitorexit
42: athrow
43: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
1 44 0 startTime J
2 44 2 hadMessages Z
3 44 3 handler Landroid/os/Handler;
12 44 4 oldPolicy Landroid/os/StrictMode$ThreadPolicy;
20 22 5 finisher Ljava/lang/Runnable;
24 27 5 finisher Ljava/lang/Runnable;
34 39 6 waitTime J
Exception table:
from to target type
4 8 9 any
9 10 9 any
12 14 14 any
19 21 22 any
22 23 22 any
18 28 28 any
33 40 41 any
41 42 41 any
public static void queue(java.lang.Runnable, boolean);
descriptor: (Ljava/lang/Runnable;Z)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: invokestatic android.app.QueuedWork.getHandler:()Landroid/os/Handler;
astore 2
start local 2 1: getstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
dup
astore 3
monitorenter
2: getstatic android.app.QueuedWork.sWork:Ljava/util/LinkedList;
aload 0
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
3: iload 1
ifeq 6
getstatic android.app.QueuedWork.sCanDelay:Z
ifeq 6
4: aload 2
iconst_1
ldc 100
invokevirtual android.os.Handler.sendEmptyMessageDelayed:(IJ)Z
pop
5: goto 7
6: StackMap locals: android.os.Handler java.lang.Object
StackMap stack:
aload 2
iconst_1
invokevirtual android.os.Handler.sendEmptyMessage:(I)Z
pop
7: StackMap locals:
StackMap stack:
aload 3
monitorexit
8: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
9: aload 3
monitorexit
10: athrow
11: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 work Ljava/lang/Runnable;
0 12 1 shouldDelay Z
1 12 2 handler Landroid/os/Handler;
Exception table:
from to target type
2 8 9 any
9 10 9 any
MethodParameters:
Name Flags
work
shouldDelay
public static boolean hasPendingWork();
descriptor: ()Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=0
0: getstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
dup
astore 0
monitorenter
1: getstatic android.app.QueuedWork.sWork:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.isEmpty:()Z
ifeq 2
iconst_0
goto 3
StackMap locals: java.lang.Object
StackMap stack:
2: iconst_1
StackMap locals:
StackMap stack: int
3: aload 0
monitorexit
4: ireturn
5: StackMap locals:
StackMap stack: java.lang.Throwable
aload 0
monitorexit
6: athrow
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
1 4 5 any
5 6 5 any
private static void processPendingWork();
descriptor: ()V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=6, args_size=0
0: lconst_0
lstore 0
start local 0 1: getstatic android.app.QueuedWork.sProcessingWork:Ljava/lang/Object;
dup
astore 2
monitorenter
2: getstatic android.app.QueuedWork.sLock:Ljava/lang/Object;
dup
astore 4
monitorenter
3: getstatic android.app.QueuedWork.sWork:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.clone:()Ljava/lang/Object;
checkcast java.util.LinkedList
astore 3
start local 3 4: getstatic android.app.QueuedWork.sWork:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.clear:()V
5: invokestatic android.app.QueuedWork.getHandler:()Landroid/os/Handler;
iconst_1
invokevirtual android.os.Handler.removeMessages:(I)V
6: aload 4
monitorexit
7: goto 10
end local 3 StackMap locals: long java.lang.Object top java.lang.Object
StackMap stack: java.lang.Throwable
8: aload 4
monitorexit
9: athrow
start local 3 10: StackMap locals: long java.lang.Object java.util.LinkedList
StackMap stack:
aload 3
invokevirtual java.util.LinkedList.size:()I
ifle 15
11: aload 3
invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
astore 5
goto 14
StackMap locals: long java.lang.Object java.util.LinkedList top java.util.Iterator
StackMap stack:
12: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 4
start local 4 13: aload 4
invokeinterface java.lang.Runnable.run:()V
end local 4 14: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 12
end local 3 15: StackMap locals: long java.lang.Object
StackMap stack:
aload 2
monitorexit
16: goto 19
StackMap locals:
StackMap stack: java.lang.Throwable
17: aload 2
monitorexit
18: athrow
19: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
1 20 0 startTime J
4 8 3 work Ljava/util/LinkedList<Ljava/lang/Runnable;>;
10 15 3 work Ljava/util/LinkedList<Ljava/lang/Runnable;>;
13 14 4 w Ljava/lang/Runnable;
Exception table:
from to target type
3 7 8 any
8 9 8 any
2 16 17 any
17 18 17 any
}
SourceFile: "QueuedWork.java"
NestMembers:
android.app.QueuedWork$QueuedWorkHandler
InnerClasses:
private QueuedWorkHandler = android.app.QueuedWork$QueuedWorkHandler of android.app.QueuedWork
public final ThreadPolicy = android.os.StrictMode$ThreadPolicy of android.os.StrictMode