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在具有后台优先级的预先存在的线程池上运行)。
- 任何情况下哪个特定模式更受欢迎?