当前位置: 首页 > 面试题库 >

AsyncTask在后台运行时看不到ProgressDialog

陆洛城
2023-03-14
问题内容

我在应用程序中使用AsyncTask下载URL。我在onPreExecute()上使用ProgressDialog进行等待。但是我在进程完成时看不到ProgressDialog,我看了一会儿。想要在下载之后看到它。谁能帮我。谢谢我的代码是这样的:

private class loadMoreListView extends AsyncTask<Void, Void, Void> {
    @Override
    protected void onPreExecute() {
        // Showing progress dialog before sending http request
        pDialog = new ProgressDialog(SingleMenuItemActivity.this);
        pDialog.setMessage("Please Wait ...");
        pDialog.isIndeterminate();
        pDialog.setCancelable(false);
        pDialog.show();
    }

    protected Void doInBackground(Void... unused) {
        runOnUiThread(new Runnable() {
            public void run() {

           // do something for downloading

        }
        });

        return (null);
    }


    protected void onPostExecute(Void unused) {
        // closing progress dialog
        pDialog.dismiss();
    }
}

问题答案:

首先,请注意所有AsyncTask实现的方法附带的“ @override”标头,例如

private class loadMoreListView extends AsyncTask<Void, Void, Void> {

    ProgressDialog pDialog;

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        pDialog = new ProgressDialog(SingleMenuItemActivity.this);
        pDialog.setMessage("Please Wait ...");
        pDialog.isIndeterminate();
        pDialog.setCancelable(false);
        pDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        pDialog.cancel();

    }

}

除非您必须在UI上执行某些操作,否则还要从doInBackground中删除它。

runOnUiThread(new Runnable() {
        public void run() {

       // do something for downloading

    }
    });

您无法在runOnUiThread上进行任何下载操作。doInBackground用于运行后台任务,例如对UI不可见的下载等。



 类似资料:
  • 部署在内网,神奇的是每一次重启项目都能获取到异常,但就那一瞬间,平时我故意编写了一些错误样例也看不到错误。服务器不在我手上。我平常点击错误,能获取到每次sentry返回的id,但是后台那个sentry网址上啥也没显示,救救!

  • 你好,所以我只能看到子弹,当我关闭我的游戏的窗口,但我没有看到错误。导入py游戏,数学,随机,操作系统pygame.init()时钟=pygame.time.时钟()宽度=800高度=608屏幕=pygame.display.set_mode((宽度,高度))运行=真正的游戏结束=假水平=假水平=0费迪格=假跳转=假

  • MinDoc 0.4以上版本支持在Linux和Windows上以服务的方式后台执行,命令如下: 安装服务 ./mindoc_linux_amd64 service install 卸载服务 ./mindoc_linux_amd64 service remove 执行服务安装后,会创建一个以 mindocd 为服务名的服务。 需要以管理员权限运行

  • 我有一个简单的java程序,它只是一段代码,可以从数据库中读取并根据某些条件修改数据库的内容。现在,我想要的是这个程序应该在启动时自动启动并在后台静默运行,除非有人从任务管理器中杀死它。我以前从未做过这样的事情,也不知道具体该怎么做。有人能帮我解决这个问题吗?谢谢你...

  • 问题内容: 我想使用ffmpeg在php中将视频转换为.flv。目前,我正在执行此操作,但是它会挂起浏览器,直到文件上传完毕。我一直在寻找有关如何在后台运行exec()进程的php文档,同时使用返回的PID更新进程。这是我发现的: 我还使用一个技巧来跟踪后台任务是否正在使用返回的PID运行: 我是否想创建一个单独的.php文件,然后从php cli运行以执行以下功能之一?我只需要稍微推动一下即可开

  • 本文向大家介绍Docker 在后台运行容器,包括了Docker 在后台运行容器的使用技巧和注意事项,需要的朋友参考一下 示例 要使容器在后台运行,请-d在容器启动期间提供命令行选项: 该选项-d以分离模式运行容器。它也等效于-d=true。 处于分离模式的容器停止时不能自动删除,这意味着不能将--rm选项与-d选项结合使用。