是否可以使用异步任务弹出对话框

时间:2012-06-11 14:20:25

标签: android android-layout dialog android-asynctask

假设我正在运行活动A.我想写一个AsyncTask,它会弹出一个关于活动A的对话框。正在考虑创建一个广播接收器,它会做到这一点,但它似乎有点倒退。 不熟悉AsyncTask

Intent topop = this.getIntent();
String str = topop.getStringExtra("key1");
if(str.equals("message"))
    dialog.show();

另一件事:getIntent()如何运作?如果我发送重复的意图?它会抓住第一个吗?

3 个答案:

答案 0 :(得分:0)

  

是否可以使用异步任务弹出对话框

是的,非常有可能:)

您可以在onPreExecuteonPostExecute中执行此操作,因为这两种方法在UI线程中调用。

从不尝试在doInBackground方法中弹出对话框,因为此方法在非ui线程中运行

答案 1 :(得分:0)

AsyncTask被设计为一个方便(帮助类),允许您执行一些后台工作并将结果传递给UI。在Android中,您1)在收到“应用程序无响应”消息之前不能阻止主(“ui”)线程超过几秒钟; 2)您无法从主线程中操纵UI;因此asynctask背后的想法。解释了这一点后,假设我正确理解了您的问题,您可以在onPreExecuteonPostExecute中的AsyncTask中弹出一个对话框。你只能在doInBackground内完成。

答案 2 :(得分:0)

当然,只需在runOnUiThread()中调用dialog.show()

yourActivity.runOnUiThread(new Runnable() {
    @Override
    public void run() {
        dialog.show();
    }
});

有关UI主题的更多信息:http://developer.android.com/resources/articles/painless-threading.html