我有一个显示进度对话框的方法...在一个单独的线程上我正在执行 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/