由于谷歌说:
一个处理程序允许您发送和处理信息,并与一个线程的MessageQueue关联Runnable对象。 每个处理程序实例与单个线程和线程的消息队列相关联。 当你创建一个新的处理程序,它被绑定到线程的线程/消息队列是创造它 - 从这一点上来说,这将提供信息和可运行到消息队列,并执行它们,因为他们出来的消息队列。
我预计,当我创建的主线程(UI线程)处理程序,它重视这个线程,从而导致其冻结UI,直到最后它的任务。 但在测试这不会发生,它的作用就像是一个backgound线程,做他的任务并行。 我用这样的创建手柄:
Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable runnable = new Runnable() {
@Override
public void run() {
for (int i = 0; i < 35000; i++) {
log.i(TAG,"log in Handler:"+i);
}}
};
mainHandler.post(runnable);
log.i(TAG,"log outSide");
在mainActivity(所以手柄应该势必主线程)。 那么,什么是这个问题还是我创建错误的方式处理?
有些朋友会注意到doSomthing()
是不够复杂,但为什么我们看到“登录外”之前“登录处理程序:”如果他们是在同一个线程。