@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()
显示具有进度条的popwindow,但进度条仍在进行,请求在我的onSuccess()之后关闭。但删除了Sql.dep_update(split_array)
,进度条效果很好。怎么处理?
答案 0 :(得分:0)
我解决了这个问题。如下:
在Sql类中添加与query和exec方法同步
由并发读/写sqlite引起的一些错误。 synchronized关键字可以同步操作
将popwindow(包含我的进度条)放在showAtLocation()
方法中显示方法onWindowFocusChanged()
。
将具有操作量的方法放在新线程中。代码如下:
@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();
}