Android新執行緒中更新主執行緒UI中的View方法彙總
Android中的View都不是執行緒安全的,所以如果在某一個新執行緒中直接更新主執行緒中的UI控制元件時就會報如下錯誤:
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
錯誤的意思是隻有建立View的原始執行緒才能更新View。
為了解決在另一個執行緒中更新UI控制元件的問題,我們可以使用如下幾種解決方案:
1. 自己寫Handler解決,參見《Android中Handler的使用》。
2. 使用Activity#runOnUiThread(Runnable)方法,該方法接收一個Runnable物件作為引數,我們需要在該Runnalble的run方法中更新View,該方法內部也使用了Handler。
3. 使用View中的postXXX等方法:
View#post(Runnable)
View#postDelayed(Runnable, long)
View#postDelayed(Runnable action, long delayMillis)
這幾個方法也是接收Runnable物件作為引數,也是在該Runnable的run方法中更新View,這幾個方法內部也是用Handler實現的。
相關文章
- Android中子執行緒更新主執行緒UI和ProgressBar的應用Android執行緒UI
- Android中UI執行緒與後臺執行緒互動設計的5種方法AndroidUI執行緒
- Java執行緒:執行緒中斷Java執行緒
- Control的Invoke和BeginInvoke 是相對於支線執行緒(因為一般在支線執行緒中呼叫,用來更新主執行緒ui)Invoke立即插入主執行緒中執行,而BeginInvoke 要等主執行緒結束才執行執行緒UI
- Android《多執行緒-中》Android執行緒
- Android中的執行緒池Android執行緒
- Android中執行緒的使用Android執行緒
- java執行緒文章彙總Java執行緒
- C#中的執行緒(三)多執行緒C#執行緒
- Java執行緒中斷與終止執行緒執行Java執行緒
- 如何在子執行緒中更新UI執行緒UI
- 老問題:Android子執行緒中更新UI的3種方法Android執行緒UI
- Android中的執行緒通訊Android執行緒
- Android JNI 中的執行緒操作Android執行緒
- Android的執行緒和執行緒池Android執行緒
- Android 的View不是執行緒安全的.AndroidView執行緒
- 執行緒的中斷執行緒
- Java中的執行緒Java執行緒
- java中執行緒池的生命週期與執行緒中斷Java執行緒
- Android 執行緒優化之執行緒池shutdown方法Android執行緒優化
- 多執行緒(五)---執行緒的Yield方法執行緒
- 【多執行緒總結(二)-執行緒安全與執行緒同步】執行緒
- MFC UI執行緒UI執行緒
- 執行緒、開啟執行緒的兩種方式、執行緒下的Join方法、守護執行緒執行緒
- 解惑Android的post()方法究竟執行在哪個執行緒中Android執行緒
- Java中命名執行器服務執行緒和執行緒池Java執行緒
- 多執行緒並行執行,然後彙總結果執行緒並行
- java執行緒執行緒休眠,sleep方法Java執行緒
- JVM中的執行緒行為JVM執行緒
- 淺談執行緒池(中):獨立執行緒池的作用及IO執行緒池執行緒
- 執行緒中斷以及執行緒中斷引發的那些問題執行緒
- 子執行緒與UI執行緒的通訊(委託)執行緒UI
- python多執行緒中:如何關閉執行緒?Python執行緒
- Android中的多程式、多執行緒Android執行緒
- 掌握Android中的程式和執行緒Android執行緒
- Android多執行緒之執行緒池Android執行緒
- Java中守護執行緒的總結Java執行緒
- IO流中「執行緒」模型總結執行緒模型