1. 程式人生 > >重新整理UI的方法總結

重新整理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