Handler源码分析
Handler源码分析 Activity启动时的Looper 当程序运行时,会先执行 ActivityThread 的 main 方法。会执行 Looper.prepareMainLooper() 方法和 Looper.loop() 方法。 Looper.prepareMainLooper() public static void prepareMainLooper ( ) { prepare ( false ) ; synchronized ( Looper . class ) { if ( sMainLooper != null ) { throw new IllegalStateException ( "The main Looper has already been prepared." ) ; } sMainLooper = myLooper ( ) ; } } 其中又会进入 prepare 方法中,会发现调用了 sThreadLocal.set(new Looper(quitAllowed)); 其中通过 new Looper() 方法 private Looper ( boolean quitAllowed ) { mQueue = new MessageQueue ( quitAllowed ) ; mThread = Thread . currentThread