将数据插入本地数据库时,Android ProgressBar 不更新
Posted
技术标签:
【中文标题】将数据插入本地数据库时,Android ProgressBar 不更新【英文标题】:Android ProgressBar not update when insert data to local db 【发布时间】:2020-05-05 16:47:49 【问题描述】:我在更新进度条时遇到问题。在这里,我制作了一个自定义进度条功能,如下所示
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)。
在数据插入前更新进度条。但是当数据声明插入进度条时不会更新。如何解决这个问题? 谢谢大家。
【问题讨论】:
【参考方案1】:我已经解决了这个问题。经过 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();
感谢大家。如果有人遇到这种问题。你可以按照这种方式。另外,如果有人找到比我的解决方案更好的解决方案,您可以给出答案或建议。
【讨论】:
以上是关于将数据插入本地数据库时,Android ProgressBar 不更新的主要内容,如果未能解决你的问题,请参考以下文章