簡體   English   中英

后台線程與UI交互

[英]Background thread Interact with UI

我正在使用Eclipse和android編程。 AsyncThread可以與UI交互嗎,我的后台線程中包含以下代碼,並且會引發異常:

if (pressTime == 0){
    displayTime.setText("You missed your ring");
}

只有實際創建視圖的線程(通常是UI線程)才能修改視圖。 您必須在UI線程隊列上發布要帶到UI的修改。 最終,在您的上下文中是活動,這是通過runOnUiThread實現的。 否則,您可以使用和Handler

這里是runOnUiThread的文檔。 這里供處理程序使用。

您可以使用Handler 只需在UI線程中創建它,然后從異步線程中發布對其的調用即可。

例如,如果您使用的是AsyncTask ,則只需添加以下全局變量:

Handler mHandler;

接下來,在任務的構造函數或onPreExecute方法中,添加以下行:

mHandler = new Handler();

最后,只要在UI Thread上調用了上述代碼,就可以使用以下代碼在doInBackground方法中的上述線程上執行代碼:

mHandler.post(new Runnable() {
    @Override
    public void run() {
        if (pressTime == 0)
            displayTime.setText("You missed your ring");
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM