2017-06-01 62 views
0

在我的应用程序中,我有一个dbAdapter,其中一个功能对多行进行批量更新。此前,该数据总体勉强拍了几毫秒,并从主线程,我只是叫:Android:从dbAdapter更新UI TextView

dbAdapter.BatchUpdate();

不过,现在上面的函数中的数据人口占多少秒。我现在已经显示indeterminate progressBar,并通过Runnable执行上述操作。

如何将其转换为horizontal progressBar,我可以根据要处理的行数和当前行号设置进度?由于函数以BEGIN和COMMIT开始和结束,因此我可能无法简单地拉取行数并逐行处理(从UI中)。

编辑

下面的代码的摘录...

/* In Main Activity */ 
mlBinding.btnBatchUpdate.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     Runnable batch = new Runnable() { 
      @Override 
      public void run() { 
       dbAdapter = new DBAdapter(this); 
       dbAdapter.batchUpdate(); 
      } 
     }; 
     batch.run(); 
    } 
} 


/* In DBAdapter Class */ 
class DBAdapter { 
    private DBHelper dbHelper; 
    private SQLiteDatabase dbW; 
    private SQLiteDatabase dbR; 

    public boolean batchUpdate() { 
     try { 
      dbW.execSQL("BEGIN;"); 

      String[] itemsToProcess = getItemsToProcess(); 
      for (int i=0; i<itemsToProcess.length; i++) { 
       //Do some really long stuff here 
      } 

      dbW.execSQL("COMMIT;"); 
     } catch (Exception e) {} 
    } 
} 
+0

提供你的代码。 – Ibrahim

回答

0

这可能是很多不同的问题,例如

  1. Do some really long stuff here确实延迟(衡量currentTimeMillis从Java)
  2. 通信延迟
  3. DB SQL执行时间过长

所以,你必须先定位问题......

+0

我现在正在加密数据,所以加密部分需要时间。 –