1 .class public Landroid/os/Looper;
2 .super Ljava/lang/Object;
7 .field private static final TAG:Ljava/lang/String; = "Looper"
9 .field private static sMainLooper:Landroid/os/Looper;
11 .field static final sThreadLocal:Ljava/lang/ThreadLocal;
12 .annotation system Ldalvik/annotation/Signature;
14 "Ljava/lang/ThreadLocal",
16 "Landroid/os/Looper;",
24 .field private mLogging:Landroid/util/Printer;
26 .field final mQueue:Landroid/os/MessageQueue;
28 .field volatile mRun:Z
30 .field final mThread:Ljava/lang/Thread;
34 .method static constructor <clinit>()V
37 new-instance v0, Ljava/lang/ThreadLocal;
39 invoke-direct {v0}, Ljava/lang/ThreadLocal;-><init>()V
41 sput-object v0, Landroid/os/Looper;->sThreadLocal:Ljava/lang/ThreadLocal;
46 .method private constructor <init>(Z)V
49 invoke-direct {p0}, Ljava/lang/Object;-><init>()V
51 new-instance v0, Landroid/os/MessageQueue;
53 invoke-direct {v0, p1}, Landroid/os/MessageQueue;-><init>(Z)V
55 iput-object v0, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
59 iput-boolean v0, p0, Landroid/os/Looper;->mRun:Z
61 invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
65 iput-object v0, p0, Landroid/os/Looper;->mThread:Ljava/lang/Thread;
70 .method public static getMainLooper()Landroid/os/Looper;
73 const-class v1, Landroid/os/Looper;
78 sget-object v0, Landroid/os/Looper;->sMainLooper:Landroid/os/Looper;
89 .catchall {:try_start_3 .. :try_end_9} :catchall_7
94 .method public static loop()V
97 invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
103 new-instance v8, Ljava/lang/RuntimeException;
105 const-string v9, "No Looper; Looper.prepare() wasn\'t called on this thread."
107 invoke-direct {v8, v9}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
112 iget-object v7, v3, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
114 invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
116 invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
121 invoke-virtual {v7}, Landroid/os/MessageQueue;->next()Landroid/os/Message;
123 move-result-object v4
130 iget-object v2, v3, Landroid/os/Looper;->mLogging:Landroid/util/Printer;
134 new-instance v8, Ljava/lang/StringBuilder;
136 invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
138 const-string v9, ">>>>> Dispatching to "
140 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
142 move-result-object v8
144 iget-object v9, v4, Landroid/os/Message;->target:Landroid/os/Handler;
146 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
148 move-result-object v8
152 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
154 move-result-object v8
156 iget-object v9, v4, Landroid/os/Message;->callback:Ljava/lang/Runnable;
158 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
160 move-result-object v8
162 const-string v9, ": "
164 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
166 move-result-object v8
168 iget v9, v4, Landroid/os/Message;->what:I
170 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
172 move-result-object v8
174 invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
176 move-result-object v8
178 invoke-interface {v2, v8}, Landroid/util/Printer;->println(Ljava/lang/String;)V
181 iget-object v8, v4, Landroid/os/Message;->target:Landroid/os/Handler;
183 invoke-virtual {v8, v4}, Landroid/os/Handler;->dispatchMessage(Landroid/os/Message;)V
187 new-instance v8, Ljava/lang/StringBuilder;
189 invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
191 const-string v9, "<<<<< Finished to "
193 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
195 move-result-object v8
197 iget-object v9, v4, Landroid/os/Message;->target:Landroid/os/Handler;
199 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
201 move-result-object v8
205 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
207 move-result-object v8
209 iget-object v9, v4, Landroid/os/Message;->callback:Ljava/lang/Runnable;
211 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
213 move-result-object v8
215 invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
217 move-result-object v8
219 invoke-interface {v2, v8}, Landroid/util/Printer;->println(Ljava/lang/String;)V
222 invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
230 const-string v8, "Looper"
232 new-instance v9, Ljava/lang/StringBuilder;
234 invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
236 const-string v10, "Thread identity changed from 0x"
238 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
240 move-result-object v9
242 invoke-static {v0, v1}, Ljava/lang/Long;->toHexString(J)Ljava/lang/String;
244 move-result-object v10
246 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
248 move-result-object v9
250 const-string v10, " to 0x"
252 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
254 move-result-object v9
256 invoke-static {v5, v6}, Ljava/lang/Long;->toHexString(J)Ljava/lang/String;
258 move-result-object v10
260 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
262 move-result-object v9
264 const-string v10, " while dispatching to "
266 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
268 move-result-object v9
270 iget-object v10, v4, Landroid/os/Message;->target:Landroid/os/Handler;
272 invoke-virtual {v10}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
274 move-result-object v10
276 invoke-virtual {v10}, Ljava/lang/Class;->getName()Ljava/lang/String;
278 move-result-object v10
280 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
282 move-result-object v9
284 const-string v10, " "
286 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
288 move-result-object v9
290 iget-object v10, v4, Landroid/os/Message;->callback:Ljava/lang/Runnable;
292 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
294 move-result-object v9
296 const-string v10, " what="
298 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
300 move-result-object v9
302 iget v10, v4, Landroid/os/Message;->what:I
304 invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
306 move-result-object v9
308 invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
310 move-result-object v9
312 invoke-static {v8, v9}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/String;)I
315 invoke-virtual {v4}, Landroid/os/Message;->recycle()V
320 .method public static myLooper()Landroid/os/Looper;
323 sget-object v0, Landroid/os/Looper;->sThreadLocal:Ljava/lang/ThreadLocal;
325 invoke-virtual {v0}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object;
327 move-result-object v0
329 check-cast v0, Landroid/os/Looper;
334 .method public static myQueue()Landroid/os/MessageQueue;
337 invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
339 move-result-object v0
341 iget-object v0, v0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
346 .method public static prepare()V
351 invoke-static {v0}, Landroid/os/Looper;->prepare(Z)V
356 .method private static prepare(Z)V
359 sget-object v0, Landroid/os/Looper;->sThreadLocal:Ljava/lang/ThreadLocal;
361 invoke-virtual {v0}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object;
363 move-result-object v0
367 new-instance v0, Ljava/lang/RuntimeException;
369 const-string v1, "Only one Looper may be created per thread"
371 invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
376 sget-object v0, Landroid/os/Looper;->sThreadLocal:Ljava/lang/ThreadLocal;
378 new-instance v1, Landroid/os/Looper;
380 invoke-direct {v1, p0}, Landroid/os/Looper;-><init>(Z)V
382 invoke-virtual {v0, v1}, Ljava/lang/ThreadLocal;->set(Ljava/lang/Object;)V
387 .method public static prepareMainLooper()V
392 invoke-static {v0}, Landroid/os/Looper;->prepare(Z)V
394 const-class v1, Landroid/os/Looper;
399 sget-object v0, Landroid/os/Looper;->sMainLooper:Landroid/os/Looper;
403 new-instance v0, Ljava/lang/IllegalStateException;
405 const-string v2, "The main Looper has already been prepared."
407 invoke-direct {v0, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
416 .catchall {:try_start_7 .. :try_end_15} :catchall_13
422 invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
424 move-result-object v0
426 sput-object v0, Landroid/os/Looper;->sMainLooper:Landroid/os/Looper;
430 .catchall {:try_start_16 .. :try_end_1d} :catchall_13
437 .method public dump(Landroid/util/Printer;Ljava/lang/String;)V
440 invoke-static {p1, p2}, Landroid/util/PrefixPrinter;->create(Landroid/util/Printer;Ljava/lang/String;)Landroid/util/Printer;
442 move-result-object p1
444 invoke-virtual {p0}, Landroid/os/Looper;->toString()Ljava/lang/String;
446 move-result-object v4
448 invoke-interface {p1, v4}, Landroid/util/Printer;->println(Ljava/lang/String;)V
450 new-instance v4, Ljava/lang/StringBuilder;
452 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
454 const-string/jumbo v5, "mRun="
456 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
458 move-result-object v4
460 iget-boolean v5, p0, Landroid/os/Looper;->mRun:Z
462 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
464 move-result-object v4
466 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
468 move-result-object v4
470 invoke-interface {p1, v4}, Landroid/util/Printer;->println(Ljava/lang/String;)V
472 new-instance v4, Ljava/lang/StringBuilder;
474 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
476 const-string/jumbo v5, "mThread="
478 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
480 move-result-object v4
482 iget-object v5, p0, Landroid/os/Looper;->mThread:Ljava/lang/Thread;
484 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
486 move-result-object v4
488 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
490 move-result-object v4
492 invoke-interface {p1, v4}, Landroid/util/Printer;->println(Ljava/lang/String;)V
494 new-instance v4, Ljava/lang/StringBuilder;
496 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
498 const-string/jumbo v5, "mQueue="
500 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
502 move-result-object v5
504 iget-object v4, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
508 iget-object v4, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
511 invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
513 move-result-object v4
515 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
517 move-result-object v4
519 invoke-interface {p1, v4}, Landroid/util/Printer;->println(Ljava/lang/String;)V
521 iget-object v4, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
525 iget-object v5, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
530 invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
534 iget-object v4, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
536 iget-object v0, v4, Landroid/os/MessageQueue;->mMessages:Landroid/os/Message;
543 new-instance v4, Ljava/lang/StringBuilder;
545 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
547 const-string v6, " Message "
549 invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
551 move-result-object v4
553 invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
555 move-result-object v4
557 const-string v6, ": "
559 invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
561 move-result-object v4
563 invoke-virtual {v0, v2, v3}, Landroid/os/Message;->toString(J)Ljava/lang/String;
565 move-result-object v6
567 invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
569 move-result-object v4
571 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
573 move-result-object v4
575 invoke-interface {p1, v4}, Landroid/util/Printer;->println(Ljava/lang/String;)V
577 add-int/lit8 v1, v1, 0x1
579 iget-object v0, v0, Landroid/os/Message;->next:Landroid/os/Message;
581 .catchall {:try_start_61 .. :try_end_94} :catchall_b6
586 const-string v4, "(null"
592 new-instance v4, Ljava/lang/StringBuilder;
594 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
596 const-string v6, "(Total messages: "
598 invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
600 move-result-object v4
602 invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
604 move-result-object v4
608 invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
610 move-result-object v4
612 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
614 move-result-object v4
616 invoke-interface {p1, v4}, Landroid/util/Printer;->println(Ljava/lang/String;)V
628 .catchall {:try_start_98 .. :try_end_b8} :catchall_b6
633 .method public getQueue()Landroid/os/MessageQueue;
636 iget-object v0, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
641 .method public getThread()Ljava/lang/Thread;
644 iget-object v0, p0, Landroid/os/Looper;->mThread:Ljava/lang/Thread;
649 .method public final postSyncBarrier()I
652 iget-object v0, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
654 invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
658 invoke-virtual {v0, v1, v2}, Landroid/os/MessageQueue;->enqueueSyncBarrier(J)I
665 .method public quit()V
668 iget-object v0, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
670 invoke-virtual {v0}, Landroid/os/MessageQueue;->quit()V
675 .method public final removeSyncBarrier(I)V
678 iget-object v0, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue;
680 invoke-virtual {v0, p1}, Landroid/os/MessageQueue;->removeSyncBarrier(I)V
685 .method public setMessageLogging(Landroid/util/Printer;)V
688 iput-object p1, p0, Landroid/os/Looper;->mLogging:Landroid/util/Printer;
693 .method public toString()Ljava/lang/String;
696 new-instance v0, Ljava/lang/StringBuilder;
698 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
700 const-string v1, "Looper{"
702 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
704 move-result-object v0
706 invoke-static {p0}, Ljava/lang/System;->identityHashCode(Ljava/lang/Object;)I
710 invoke-static {v1}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
712 move-result-object v1
714 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
716 move-result-object v0
718 const-string/jumbo v1, "}"
720 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
722 move-result-object v0
724 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
726 move-result-object v0