簡體   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