我正在研究大型应用的代码。 UI中使用了3种异步模式,它们看起来都是等价的:
模式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(Runnable)
new Thread() {
public void run() {
//background task
runOnUiThread(new Runnable() {
public void run() {
//UI callback
}
});
}
}.start();
模式3,Handler.post(可运行)
new Thread() {
public void run() {
//background task
handler.post(new Runnable() {
public void run() {
//UI callback
}
});
}
}.start();
问题:
答案 0 :(得分:3)
他们都是明显或内部的Handler
。
AsyncTask#finish()
的 onPostExecute()
是从Handler
消息循环中调用的。
runOnUiThread()
将Runnable
发布到Handler
。如果它是UI线程,则可以同步执行runnable - 这并不总是可取的。
直接使用Handler
可以为您提供低级控制。
使用方法取决于您的具体要求。