這篇文章Communicating between threads section說爲什麼只能通過處理程序與UI線程進行通信?
的問題尤爲嚴重,如果在新線程任務希望 修改與主UI線程相關的意見,因爲它是嚴格 禁止這樣做直接。
爲什麼禁止/禁止。
這篇文章Communicating between threads section說爲什麼只能通過處理程序與UI線程進行通信?
的問題尤爲嚴重,如果在新線程任務希望 修改與主UI線程相關的意見,因爲它是嚴格 禁止這樣做直接。
爲什麼禁止/禁止。
請仔細閱讀本,
它總是一個很好的做法,以保持對UI線程的UI工作,並在非UI線程非UI的工作,因爲它的蜂窩法律。 我們始終具有專用UI線程啓動,但只要我們創建另一個線程來執行一些非UI的任務,我們會被丟棄的專用UI線程,並在非UI線程的土地,一旦當我們完成我們的工作並希望將處理後的輸出放在UI線程上,因爲我們已經失去了對UI線程的引用,所以不能直接進行處理。現在Handler可以幫助獲取創建它的線程的引用。因此,在onCreate()中初始化Handler是一種很好的做法,然後在非ui線程中調用此引用。
使用的AsyncTask <>由Android提供的,它同步的非UI線程的UI和非UI線程
方法中的AsyncTask <>
doInBackground(字符串...)//工作
postExecute(字符串結果)//獲取從非UI線程的輸出和
把輸出回到UI線程
這不是我的問題。 – Ashwin
的處理程序,以便他們在主線程中依次執行在的MessageQueue有助於從工作線程隊列中的請求。
下面的博客文章是相當有幫助瞭解處理程序如何工作的更多:
這是一個非常好的鏈接。它說消息被放入隊列中。然後,他們被閒人循環並一一執行。消息如何執行。他們是否意味着updateui(消息)被放置在隊列中被循環者截斷並執行? – Ashwin
是的,這就是我的理解。這裏有另一個相當有用的鏈接:http://techtej.blogspot.com/2011/02/android-passing-data-between-main.html –
該鏈接更好!我在您的個人資料中注意到您是Android開發人員。你能幫助我解決這個問題嗎?http://stackoverflow.com/questions/10548530/validating-and-reading-a-word-file-in-android? – Ashwin
組成UI將是一個痛苦的屁股,如果他們也不得不做出線程安全的..測量&佈局 - 然後是平局 - 將不得不被更新保護。從設計的角度來看,限制繪圖之間的更新是有意義的。 – Jens
@Jens:那麼處理程序如何確保線程安全? – Ashwin
的'Handler',如果UI線程上創建將使用與UI線程相關的'Looper'。這可是很容易地創建使用'android.os.HandlerThread'是* *無法更新UI一個'Handler'。 – Jens