2017-06-01 61 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

我現在正在加密數據,所以加密部分需要時間。 –