簡體   English   中英

TimerTask無法更新UI?

[英]TimerTask can not update UI?

 new Timer().schedule(new TimerTask() {

        public void run() {
            KeyBoardUtil.showKeyBoard(et_search);
        }
    }, 300);

我顯示鍵盤使用TimerTask,並且運行正常。 怎么解釋呢?

您可以使用runOnUiThread

   runOnUiThread(new Runnable(){
        public void run() {
             // Your code
        }
    });

要么

Handler mainHandler = new Handler(context.getMainLooper());

Runnable myRunnable = new Runnable() {
    @Override 
    public void run() {
        // Your code
    }  
};
mainHandler.post(myRunnable);

developer.android.com

在上一課中,您學習了如何在ThreadPoolExecutor管理的線程上啟動任務。 最后一課向您展示如何將數據從任務發送到在用戶界面(UI)線程上運行的對象。 此功能允許您的任務執行后台工作,然后將結果移至UI元素(例如位圖)。

每個應用程序都有自己的特殊線程來運行UI對象,例如View對象; 該線程稱為UI線程。 只有在UI線程上運行的對象才能訪問該線程上的其他對象。 因為您在線程池中的線程上運行的任務不在您的UI線程上運行,所以它們無權訪問UI對象。 要將數據從后台線程移動到UI線程,請使用在UI線程上運行的Handler。

暫無
暫無

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

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