@Override
public void onStart() {
setCharset("GB2312");
progess_bar_PopupWindow();
}
@Override
public void onSuccess(String response) {
String[] split_array = JwcRegex
.parse_department_list(response);
Sql.dep_update(split_array);//here contain amount of sql insert operation
Toast.makeText(getApplicationContext(), "hello rex",
Toast.LENGTH_LONG).show();
if (pw_progress_window.isShowing()) {
pw_progress_window.dismiss();
}
}
当 http 请求开始时,progess_bar_PopupWindow()
显示带有进度条的弹出窗口,但进度条仍然存在,请求后它在我的 onSuccess() 中关闭。 但删除了Sql.dep_update(split_array)
,进度条效果很好。 怎么处理?
我解决了这个问题。如下:
-
在 Sql 类中添加与查询和 exec 方法同步。
并发读/写 sqlite 导致一些错误。同步关键字可以同步操作 -
将弹出窗口(带有我的进度条)显示在方法
onWindowFocusChanged()
中的方法showAtLocation()
。 -
将具有大量操作的方法放在新线程中。 代码如下:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
if (!hasLoad) {
get_departments();
hasLoad = true;
}
}
public void exec(String sql) {
synchronized (this) {
db.execSQL(sql);
}
}
@Override
public void onSuccess(String response) {
Yangtzeu.TempString = JwcRegex
.parse_department_list(response);
if (pw_progress_window.isShowing()) {
pw_progress_window.dismiss();
}
new Thread(new Runnable() {
public void run() {
JwcDB.dep_update(Yangtzeu.TempString);
ComDB.kv_set("dep_list_exp", "false");
}
}).start();
}