[将数据插入本地数据库时,Android ProgressBar无法更新

问题描述 投票:1回答:1

我在更新进度栏时遇到问题。在这里,我制作了一个自定义的进度栏函数,如下所示

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)。

这里是数据插入策略进度条更新之前的内容。但是当数据提示插入进度条时不会更新。如何解决这个问题?谢谢大家。

android sqlite progressdialog android-progressbar android-threading
1个回答
0
投票

我已经解决了这个问题。经过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();
}

谢谢大家。如果有人有这种类型的问题。您可以按照这种方式。另外,如果有人找到比我的解决方案更好的解决方案,您可以给出答案或建议。

© www.soinside.com 2019 - 2024. All rights reserved.