重新整理UI的方法總結
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0302/946.html
這篇博文提供了兩種重新整理ui的方法,
1.handler+thread
2.activity的runOnUiThread(Runable)方法
我在這裡要補充一個 ,就是使用系統封裝好的AsyncTask.
AsyncTask是一種類似Thread+Hander機制的處理耗時操作的類,
通過在UI執行緒中excute()啟動操作,
在AsyncTask中
doInBackground()中處理耗時操作(執行在自執行緒中,處理耗時操作),可以呼叫 publishProgress方法來更新實時的任務進度。該方法是抽象方法,子類必須實現 ;
onPreExecute()方法中做一些準備工作,如在介面上顯示一個進度條(此方法執行在UI主執行緒中);
onProgressUpdate(Progress...),在publishProgress方法被呼叫後,UI thread將呼叫這個方法從而在介面上展示任務的進展情況,例如通過一個進度條進行展示。
onPostExecute(Result), 在doInBackground 執行完成後,onPostExecute 方法將被UI thread呼叫,後臺的計算結果將通過該方法傳遞到UI thread,處理耗時操作完成後的操作.
其實AnsyTask內部是通過執行緒池+Handler機制實現的,將UI主執行緒的邏輯通過Handler的sendMessage方法傳送給UI主執行緒的HandlerMessage()方法,在這裡有使用時對應的onPreExecute()和onPostExecute(Result),onProgressUpdate(Progress...)方法,子執行緒中有doInBackground()的方法。其實真正用AnsyTask很少,大多數情況下會通過執行緒池+Handler進行封裝去實現非同步的邏輯操作。
部分對應原始碼的分析:
http://www.cnblogs.com/foreal/archive/2012/05/13/2498505.html