Android:从dbAdapter更新UI TextView
问题描述:
在我的应用程序中,我有一个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) {}
}
}
答
这可能是很多不同的问题,例如
-
Do some really long stuff here
确实延迟(衡量currentTimeMillis
从Java) - 通信延迟
- DB SQL执行时间过长
所以,你必须先定位问题......
+0
我现在正在加密数据,所以加密部分需要时间。 –
提供你的代码。 – Ibrahim