我在 AsyncTask 内部运行了一个很长的过程,但它可能需要在处理时确认用户的某些内容。我知道如何显示确认对话框,但如何检索输出并等待使用确认?
this.runOnUiThread(new Runnable() {
public void run() {
boolean output = ConfirmUser(message);
}
});
我会说这是个坏主意。如果您需要用户的确认,最好将 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
}