0

假设我正在运行活动 A。我想编写一个AsyncTask将在活动 A 上弹出一个对话框的对话框。正在考虑创建一个可以执行此操作的广播接收器,但对我来说似乎有点倒退。不太熟悉AsyncTask

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

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

4

3 回答 3

0

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

是的,很有可能:)

您可以在 inonPreExecute或 in 中执行此操作,onPostExecute因为这两个方法是在 UI Thread 中调用的。

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

于 2012-06-11T14:24:19.373 回答
0

AsyncTask 被设计为一种便利(帮助类),允许您做一些后台工作并将结果传递给 UI。在 Android 中,您 1) 在收到“应用程序未响应”消息之前,您无法阻塞主(“ui”)线程超过几秒钟;2)您无法从主线程之外操作 UI;因此 asynctask 背后的想法。解释了这一点,并且假设我正确理解了您的问题,您可以在 AsyncTask 中以onPreExecute或中的任何一个弹出一个对话框onPostExecute。您只能在doInBackground.

于 2012-06-11T14:25:41.713 回答
0

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

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

更多关于 UI 线程:http: //developer.android.com/resources/articles/painless-threading.html

于 2012-06-11T14:33:38.977 回答