我在网上看到了一段代码.我想知道为什么我们需要使用runnable来设置TextView的文本?谢谢!
while (true) {
// listen for incoming clients
Socket client = serverSocket.accept();
handler.post(new Runnable() {
@Override
public void run() {
serverStatus.setText("Connected.");
}
});
Run Code Online (Sandbox Code Playgroud)
小智 7
这个应用程序是多线程的,不是吗?在这种情况下,只有一个线程可以在UI上执行操作 - UI线程.如果您不手动创建新线程,则不必担心这一点.一旦你自己开始一个新的线程并且你想让它做一些与UI相关的事情(比如更新serverStatus文本字段的文本),你必须在UI线程上做.不遵守此规则将导致异常.
处理程序用作在线程之间传递消息的方法.在这种情况下,UI线程有一个处理程序,它在创建服务器线程时作为参数发送.每次需要更新UI时,它都会向UI线程发送一条消息,该线程会定期检查新消息并执行附加到它们的Runnables.
这是另一个链接(示例)可能会帮助您更好地理解它:http: //developer.android.com/guide/appendix/faq/commontasks.html#threading
| 归档时间: |
|
| 查看次数: |
3701 次 |
| 最近记录: |