我會說這是個壞主意。如果你需要用戶的確認,你最好將你的AsyncTask分爲兩部分:首先做一些部分,然後在onPostExecute()中顯示對話框(因爲它在ui線程上運行),並根據用戶操作啓動第二個AsyncTask。
如果您仍然想這樣做一個的AsyncTask,你可以做這樣的:
final BlockingQueue<Boolean> queue = new ArrayBlockingQueue<Boolean>(1);
this.runOnUiThread(new Runnable() {
public void run() {
// Assuming you have ConfirmUser method which returns boolean
queue.add(ConfirmUser(message));
}
});
Boolean result = null;
try {
// This will block until something will be added to the queue
result = queue.take();
} catch (InterruptedException e) {
// deal with it
}
完美!謝謝,btw分裂AsyncTask是不可能與當前的設計,但我會考慮如果可能或需要更好的方法。 – xmen
有一件事要問,當InterruptedException會被拋出? – xmen
+1好的答案! – yorkw