将数据插入本地数据库时,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 不更新的主要内容,如果未能解决你的问题,请参考以下文章

在单击按钮时将数据插入 Android Studio 中的 SQlite 数据库

Android将数据插入实时mysql数据库

将多个条目插入SQLite数据库android

Android项目实战_手机安全卫士系统加速

在应用程序启动时将外部数据库与 SQLite 数据库同步

从服务器同步时如何构建本地数据库以删除行