非同期タスクの詳細はわかりません。
最近、プロジェクトで非同期タスクを使用してサーバー側からデータを取得し、結果に応じて UI を更新しました。通常の方法で進行状況ダイアログを実装し、それを却下しました。このような onPostExicute メソッド
@Override
protected void onPostExecute(ArrayList<StationSlots> result) {
try {
publishProgress(100);
WizardStep4.retStationSlots = result;
if (WizardStep4.this.dialog != null) {
WizardStep4.this.dialog.dismiss();
}
} catch (Exception e) {
}
}
しかし、いくつかのコードが同じことを行っていることがわかりましたが、このようなUIスレッドでアクションを実行しています
@Override
protected void onPostExecute(ArrayList<StationSlots> result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
publishProgress(100);
WizardStep4.retStationSlots = result;
if (WizardStep4.this.dialog != null) {
WizardStep4.this.dialog.dismiss();
}
} catch (Exception e) {
}
}
});
}
どちらが最良の方法で、違いは何ですか?