0
我正在研究一個大型應用程序的代碼。有在UI中使用3種異步模式,所有這些似乎等效:AsyncTask vs Activity.runOnUiThread()vs Handler.post()
模式1,的AsyncTask
new AsyncTask<X, Void, Z>() {
protected Boolean doInBackground(X... params) {
//background task
}
protected void onPostExecute(Z res) {
//UI callback
}
}.execute();
模式2,Activity.runOnUiThread(可運行)
new Thread() {
public void run() {
//background task
runOnUiThread(new Runnable() {
public void run() {
//UI callback
}
});
}
}.start();
模式3,Handler.post(Runnable)
個new Thread() {
public void run() {
//background task
handler.post(new Runnable() {
public void run() {
//UI callback
}
});
}
}.start();
問題:
- 3種模式,我缺少什麼區別呢? (除了AsyncTask在具有後臺優先級的預先存在的線程池上運行)。
- 任何情況下哪個特定模式更受歡迎?