從網上搜到的結果,做為整理,以便自己日後使用。
方法一:用handler
1、主線程中定義handler:
handler mhandler = new handler()
} };
2.子執行緒發訊息,通知handler完成ui更新:
private void updateweather()
}).start();
}
方法一的handler物件必須定義在主線程中,如果是多個類直接互相呼叫,就不是很方便,需要傳遞content物件或通過介面呼叫;
方法二:用runonuithread更新
在子執行緒中通過runonuithread()方法更新ui:
new thread()
});}
}.start();
如果在非上下文類中(activity),可以通過傳遞上下文實現呼叫;
activity activity = (activity) imageview.getcontext();
activity.runonuithread(new runnable()
});
這種方法使用比較靈活,但如果thread定義在其他地方,需要傳遞activity物件;
方法三:view.post(runnable r)
imageview.post(new runnable()
});
這種方法更簡單,但需要傳遞要更新的view過去; Android在子執行緒更新UI的三種方式
第一種 handler直接post new handler mcontext.getmainlooper post new runnable 第二種 runonuithread 需要可以拿到activity 如果當前執行緒是ui執行緒,那麼行動是立即執行。如果當前執行緒不是ui執行緒,操作是發布到事...
子執行緒更新UI
一般在winform c s程式中經常會在子執行緒中更新控制項的情況,桌面程式ui執行緒是主線程,當試圖從子執行緒直接修改控制項屬性時會出現 從不是建立控制項的執行緒訪問它 的異常提示。跨執行緒更新ui控制項的常用方法有兩種 1.使用控制項自身的invoke begininvoke方法 2.使用sy...
執行緒 三種方式 建立執行緒
第一種 1 模擬龜兔賽跑 繼承thread 重寫run 執行緒體 2 使用執行緒 建立子類物件 物件.strat 執行緒啟動 author administrator public class rabbits extends thread class tortoise extends thread ...