最近看到形如下面的一段程序:
public class MainActivity extends Activity {
public Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.what) {
case 1:
Log.e("zdy", "case 1");
break;
case 2:
Log.i("zdy", "case 2");
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
onDisplay();
}
public void onDisplay() {
onResult();
dowork();
}
public void onResult() {
sendHandler(1);
Log.d("zdy", "---------------------------------------------------"
+ System.currentTimeMillis());
sendHandler(2);
}
public void sendHandler(int x) {
mHandler.obtainMessage(x).sendToTarget();
}
public void dowork() {
for (int i = 0; i < 10; i++) {
Log.d("zdy", "++++++");
}
}
}
执行的结果是 先onResult 的log打印,再到 dowork中的,最后执行handler的
疑惑:handler 是异步线程为什么会等待完dowork 执行完了才开始执行呢?