繁体   English   中英

关于Android runnable的问题

[英]A question about Android runnable

我在网上看到了一段代码。 我想知道为什么我们需要使用runnable来设置TextView的文本? 谢谢!

    while (true) {
    // listen for incoming clients
    Socket client = serverSocket.accept();
    handler.post(new Runnable() {
        @Override
        public void run() {
            serverStatus.setText("Connected.");
        }
    });

http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

这个应用程序是多线程的,不是吗? 在这种情况下,只有一个线程可以在UI上执行操作 - UI线程。 如果您不手动创建新线程,则不必担心这一点。 一旦你自己开始一个新的线程并且你想让它做一些与UI相关的事情(比如更新serverStatus文本字段的文本),你必须在UI线程上做。 不遵守此规则将导致异常。

处理程序用作在线程之间传递消息的方法。 在这种情况下,UI线程有一个处理程序,它在创建服务器线程时作为参数发送。 每次需要更新UI时,它都会向UI线程发送一条消息,该线程会定期检查新消息并执行附加到它们的Runnables。

这是另一个链接(示例)可能会帮助您更好地理解它: http//developer.android.com/guide/appendix/faq/commontasks.html#threading

那段代码在服务器线程中。 UI(在本例中为edittext)只能在Uithread中更新。 Runnable让你回到UI线程。 参考: http//developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM