android系统中的一个例子就是主线程中的所有操作都是通过主线程中的handler去处理的。例如activity的生命周期方法调用就是通过主线程中的handler去处理的。
在app的主线程中有一个类是activitythread,这个类中有一个main方法是app程序的入口,在main方法中使用Looper.prepareMainLooper(),在主线程中设置了一个looper,然后创建了一个applicationthread的线程用于和server进程中applicationthreadproxy进行进程通信,最后调用了Looper.loop()开启消息循环。
在activity的生命中期中,比如说系统服务ActivityManagerService调用applicationthreadproxy通过Binder给当前app进程中的applicationthread发送了一个暂停activity的操作。app进程中的applicationthread便会通过在主线程中的handler将这个暂停activity的消息插入到主线程的messagequeue中去处理。