(三)常见的一些原理性问题 1、Handler机制和底层实现 上面一共出现了几种类,ActivityThread,Handler,MessageQueue,Looper,msg(Message),对这些类作简要介绍: ActivityThread:程序的启动入口,该类就是我们说的主线程,它对Looper进行操作的。 Handler:字面意思是操控者,该类有比较重要的地方,就是通过handler来发送消息(sendMessage)到MessageQueue和 操作控件的更新(handleMessage)。handler下面持有这MessageQueue和Looper的对象。 MessageQueue:字面意思是消息队列,就是封装Message类。对Message进行插入和取出操作。 Message:这个类是封装消息体并被发送到MessageQueue中的,给类是通过链表实现的,其好处方便MessageQueue的插入和取出操作。还有一些字段是(int what,Object obj,int arg1,int arg2)。what是用户定义的消息和代码,以便接收者(handler)知道这个是关于什么的。obj是用来传输任意对象的,arg1和arg2是用来传递一些简单的整数类型的。 下面,我们按照启动顺序来进行源码分析: 先获取looper,如果没有就创建 创建过程: