最近几天再刷《App研发录》,第6章中一个在子线程操作UI的方法深深困扰了我,求大神解释。
具体代码如下(在子线程中显示一个AlertDialog):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
// 添加睡眠代码,防止没有check
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Looper.prepare();
new AlertDialog.Builder(MainActivity.this).setTitle("title").setMessage("message")
.setPositiveButton("sure", null).show();
Looper.loop();
}
}).start();
}
楼主也是一个深入分析过Handler,Looper源码的人,但是不能理解在子线程中构建了一个Looper,new AlertDialog还是在子线程显示了,并没有被抛到主线程中执行,为什么能不报错呢?