我需要顯示progrees對話框。這很簡單,但我絕對需要等待直到asynctask完成。這給我帶來了一些困難。等待完成asynctask方法.get()
被使用。但是這個方法blocks
我的進度對話框。 那麼,如何取消阻止progressdialog
獲取或可以取代.get()
?disparying progressdialog的困難
我在以下方法調用操作:
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
*/
}
}
在onPreExecute和隱藏在onPostExecute中顯示的問題是什麼? – stinepike
忘記刪除評論。 .get()被調用時,preexecute/postexecute - dialog的問題不會彈出。在這種情況下,asynctask完成後對話框會閃爍半秒。 – Yarh
你可以調用doInBackground中的get方法 – stinepike