之前在写程序的时候遇到过一个问题,在Activity中开启一个子线程的时候,如果在子线程中进行Toast,会报错,导致程序直接挂掉!最后搜了一些相关的文档,解决了这个问题!
Android的 官方API中有相关的介绍:
private void startThread(){
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
Toast.makeText(MainActivity.this, "子线程", Toast.LENGTH_SHORT).show();
Looper.loop(); // 进入消息循环队列
}
}).start();
}
Toast初始化的时候用到了Android 的消息传递机制,不能直接在子线程中直接初始化,通过对Looper的调用,让其进入消息循环队列中。