遇到问题:
1. 平时 Handler 使用方式,
1. 定义
private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { } } 2. 线程中发送 handler.sendEmptyMessage(); 出现结果: handler.handleMessage(Message msg)函数中调用,,,这个时候,是否运行在主线程,主要看handler是否在主线程中定义,要是handler定义在主线程,handler.handleMessage(Message msg)就运行在主线程中,要是handler对应的looper定义在线程中,handler.handleMessage(Message msg)就运行在线程中。 2. 直接调用Handler.handleMessage(msg) 这个时候,运行主要看调用的地方,当调用处是主线程的话,就运行在主线程中,要是在线程中,就相当于 函数直接调用,运行在线程中。new handle(){ handleMessage(msg){ 此处代码是否在主线程中就要看调用处了,和调用处一直线程的。 } } 总结: 其实这里和自己固有思维有关系,还有一个就是消息机制问题(该问题在这里不展开)。