我需要显示进度对话框。这很简单,但是我绝对需要等到 asynctask 完成。这暴露了我的一些困难。使用asynctask 方法等待完成.get()
。但是这种方法blocks
是我的进度对话框。progressdialog
那么,我怎样才能用 get 或什么可以替代来解除阻塞.get()
呢?
我通过以下方式调用操作:
Operation o = new Operation();
o.execute(params);
try {
o.get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
类操作
class Operation extends AsyncTask<String, Void, JSONObject> {
ProgressDialog pd;
Context con;
@Override
protected void onPreExecute() {
pd = new ProgressDialog(app);
pd.setOwnerActivity(app);
pd.setTitle("Идет загрузка...");
pd.setCancelable(true);
pd.show();
}
@Override
protected JSONObject doInBackground(String... option) {
/*
some job
*/
return json;
}
@Override
protected void onPostExecute(JSONObject result) {
super.onPostExecute(result);
pd.dismiss();
/*
some job
*/
}
}