确认AsyncTask中的对话框(Alert)

时间:2012-05-09 01:45:02

标签: java android

我在AsyncTask中运行了一个很长的进程,但它可能需要在处理时确认用户的某些内容。我知道如何显示确认对话框但是如何检索输出并等待使用确认?

this.runOnUiThread(new Runnable() {
            public void run() {
               boolean output = ConfirmUser(message);
            }
        });

1 个答案:

答案 0 :(得分:3)

我会说这是个坏主意。如果你需要用户的确认,你最好将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
}