如何理解handler处理多线程问题。
多线程问题,简单来说就是, activity运行在并且已经运行在了ui thread。如果我们有个耗时的工作(比如文件读取,从网络下载数据等等工作),我们不能让这个耗时的工作直接在ui thread中调用,而是通过开一个work thread, 在work thread中完成耗时工作。
工作流程类似:
在ui thread中运行,有个耗时工作,开work thread,让这个耗时工作在work thread中运行。问题来了,这时候,ui thread和work thread各玩各的,然后 work thread工作完成了,我们就要通知 ui thread耗时工作结束了,ui thread需要处理结果了。
work thread如何通知ui thread,然后让ui thread继续处理????
先看下ui thread的运行机制:
ui thread的运行就是一个无限的循环,在循环体内,取一个message,处理message,进入下一个循环。
public static void loop() {
final Looper me = myLooper();
final MessageQueue queue = me.mQueue;
for (;;) {
Message msg = queue.next();
//target 就是handler
msg.target.dispa