在我的应用中,我有一个dbAdapter
,其中一个函数会在很多行上进行批量更新。早些时候,数据填充只花了几毫秒而且从主线程中,我刚刚调用:
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 :(得分:0)
这可能是很多不同的问题,例如
Do some really long stuff here
执行延迟(从currentTimeMillis
开始测量)所以你必须首先将问题本地化......