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

Android 是否可以使用异步任务弹出对话框,android,android-layout,dialog,android-asynctask,Android,Android Layout,Dialog,Android Asynctask,假设我正在运行活动A。我想写一个AsyncTask,它会在活动A上弹出一个对话框。我正在考虑创建一个广播接收器来实现这一点,但对我来说似乎有点倒退。 不太熟悉异步任务 另一件事:getIntent是如何工作的?如果我发送重复的意图?它只会赶上第一个吗 是否可以使用异步任务弹出对话框 是的,很有可能: 您可以在onPreExecute或onPostExecute中执行,因为这两个方法是在UI线程中调用的 切勿尝试在doInBackground方法中弹出对话框,因为此方法在非ui线程中运行。Asyn

假设我正在运行活动A。我想写一个AsyncTask,它会在活动A上弹出一个对话框。我正在考虑创建一个广播接收器来实现这一点,但对我来说似乎有点倒退。 不太熟悉异步任务

另一件事:getIntent是如何工作的?如果我发送重复的意图?它只会赶上第一个吗

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

是的,很有可能:

您可以在onPreExecute或onPostExecute中执行,因为这两个方法是在UI线程中调用的


切勿尝试在doInBackground方法中弹出对话框,因为此方法在非ui线程中运行。AsyncTask设计为一个方便的助手类,允许您执行一些后台工作并将结果传递到ui。在Android中,1在收到应用程序未响应消息之前,您不能阻止主ui线程超过几秒钟;2您不能从主线程外操作ui;这就是异步任务背后的想法。在解释了这一点之后,假设我正确理解了您的问题,您可以在onPreExecute或onPostExecute中的AsyncTask内弹出一个对话框。你只能在doInBackground里面做

当然可以,只需在runOnUiThread中调用dialog.show即可

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

关于UI线程的更多信息:

您希望完成什么?AsyncTasks用于在后台执行长时间运行的操作,因此它们与弹出对话框没有任何关系,只是显示一个对话框来表示加载或查询初始信息;在onPostExecute中,它将在主UI线程上弹出,从技术上讲,它是我的活动?上下文是活动的类。请在所述异步任务的模板上询问我。我计划在C类中调用它,并在A类中弹出它。您不应该在一个活动中将asynctask作为内部类用于另一个活动。只需将其设为顶级类,将上下文传递给asynctask,并使用该上下文显示对话框
yourActivity.runOnUiThread(new Runnable() {
    @Override
    public void run() {
        dialog.show();
    }
});