我需要了解Looper。Looper 将咨询适当的处理程序来发送和处理与线程的 MessageQueue 关联的 Message 和 Runnable 对象。
默认情况下,线程没有与之关联的消息循环,因此也没有 Looper。要为线程创建 Looper 并使该线程专用于从消息循环中串行处理消息,您可以使用 Looper 类。
以下是我没有明确调用 Looper 的代码
Thread background2 = new Thread(new Runnable() {
@Override
public void run() {
for ( int i = 0; i < 5; i++) {
final int v =i;
try { Thread.sleep(1000);
handler.post(new Runnable() {
@Override
public void run() {
txt.setText(txt.getText() + "Thread 2 current i : " + String.valueOf(v) +System.getProperty("line.separator"));
}
});
} catch (Exception e) {
Log.v("Error", e.toString());
}
}
}
});
这是否意味着任务/可运行没有放入队列?上面的代码和这个有什么区别
Thread background3 = new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
for ( int i = 0; i < 5; i++) {
final int v =i;
try { Thread.sleep(1000);
handler.post(new Runnable() {
@Override
public void run() {
txt.setText(txt.getText()+ "Thread 3 set : " + String.valueOf(v) +System.getProperty("line.separator"));
}
});
} catch (Exception e) {
Log.v("Error", e.toString());
}
}
Looper.loop();
}
});
他们都访问同一个处理程序。他们都工作正常。