我在我的活动中启动一个线程并立即显示进度对话框。完成任务后该线程中的方法调用其他调用m_progressDialog.dismiss();
方法的线程。
这个工作正常,但我想实现进度条现在如何根据前一个线程中的任务完成来填充此栏。它将花费无限的时间来完成其操作。
这可能听起来很暧昧,但如果需要,我准备进一步详细说明。
一个小代码片段:
第一个帖子中的方法像这样结束
...
runOnUiThread(m_returnRes);
}
private Runnable m_returnRes = new Runnable() {
public void run() {
m_progressDialog.dismiss();
我也试过这样做
m_progressDialog = new ProgressDialog(this);
m_progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
m_progressDialog.setProgress(0);
m_progressDialog.setMax(100);
m_progressDialog.setMessage("Retrieving data..");
m_progressDialog.show();
Thread background = new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
try {while(m_progressDialog.getProgress()<=100){
Thread.sleep(500);}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
background.start();
但是条形码没有被填充并且在.dismiss()方法被调用后直接被解雇
答案 0 :(得分:3)
尝试使用AsyncTask。它处理自身的线程,并在onProgressUpdate内部具有函数publishprogress来更改视图内容,您可以在其中更新进度条。