java - 从线程外部更新进度对话框

标签 java android multithreading http progressdialog

我有一个显示进度对话框的方法...在一个单独的线程上我正在执行 3 个 HTTP 请求...

这是代码...

public void downloadData(View v)
{
    final ProgressDialog prog;

    try
    {
        // setup progress dialog
        prog = new ProgressDialog(this);
        prog.setTitle("Downloading Data");
        prog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        prog.setIcon(R.drawable.firstdroidicon);
        prog.setCanceledOnTouchOutside(false);
        prog.setCancelable(false);
        prog.show();


        Thread syncThread = new Thread();
        syncThread = new Thread()
        {
            public void run()
            {
                String result = "";
                String URL = //url for ReST service
                String urlParams = "";

                GetByREST gbr = new GetByREST();

                // run the customer search
                prog.setMessage("Fetching Customers");//update progress dialog
                result = //execute first post

                // run the contact search
                prog.setMessage("Fetching Contacts");//update progress dialog
                result = //execute second post

                // run the item saved search
                prog.setMessage("Fetching Items");//update progress dialog
                result = //execute third post

                prog.dismiss();
        };
        syncThread.start();
    }
    catch (Exception e)
    {
        messageBox("downloadData", e.getMessage());
    }
}

如何在每次请求之前更新进度对话框消息?

最佳答案

您需要在 runOnUIThread 调用中包装对线程上的 UI 函数的任何调用。 runOnUIThread 接受一个 runnable 并在可用时在 UI 线程上执行它。这绕过了只能在 UI 线程上更新 UI 的限制。

关于java - 从线程外部更新进度对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998067/

相关文章:

java - 将字符串分配给队列

java - 模糊的条件 Java 语法

java - 在 Android 应用程序中打开链接而不是打开 Web View

java - 为什么在布局 xml 中将 RelativeLayout 的 "layout_width"设置为固定值不起作用?

java - 如何使用 jdk 1.7 和 spring 3.0.4 将 tomcat 应用服务器更改为版本 8?

java - Gradle "test"任务没有在应该失败的地方失败

android - 如何通过有线连接使用 SpaceDesk?

JavaScript:异步但不是多线程?

c - 高效的C/C++多线程程序可对数据进行分区和处理

multithreading - 使用 perl 使用完整的处理能力