我在更新进度栏时遇到问题。在这里,我制作了一个自定义的进度栏函数,如下所示
ProgressDialog progressBar1;
private int progressBarStatus = 0;
private void customProgressBar(){
progressBar1 = new ProgressDialog(DictionaryActivity.this);
progressBar1.setCancelable(true);
progressBar1.setMessage("Downloading File...");
progressBar1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressBar1.setMax(100);
progressBar1.setProgress(0);
progressBar1.show();
//reset progress bar status
progressBarStatus = 0;
new Thread(new Runnable() {
public void run() {
while (progressBarStatus < 100) {
Log.d("TAG", "run: pStatus" + " " + pStatus);
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
// call progressBar status data update
progressBarStatus = setProgressBarStatus();
new Handler(Looper.getMainLooper()).post(new Runnable(){
@Override
public void run() {
progressBar1.setProgress(progressBarStatus);
Log.d("TAG", "run: handler: " +progressBarStatus);
}
});
}
// when, file is downloaded 100%,
if (progressBarStatus >= 100) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// close the progress bar dialog
progressBar1.dismiss();
}
}
}).start();
}
public int setProgressBarStatus(){
return progressBarStatus += 2;
}
然后从数据下载功能中调用它。数据下载完成后,我将数据插入SQLite DB(本地dB)。
这里是数据插入策略进度条更新之前的内容。但是当数据提示插入进度条时不会更新。如何解决这个问题?谢谢大家。
我已经解决了这个问题。经过3个小时的研究,我发现,当我在Thread
中添加插入功能(从此处调用DB进行插入)并将更新的进度值发送到Progress Thread
时。然后,它运行完美,setProgress()
更新了进度。
int pStatus = 0;
public void dataInsertinoUsingThread(final Example data){
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<data.getData().getBanglaWordDictionary().size(); i++){
.........
pStatus+=i;
}
}
}).start();
}
谢谢大家。如果有人有这种类型的问题。您可以按照这种方式。另外,如果有人找到比我的解决方案更好的解决方案,您可以给出答案或建议。