我一直在試圖讓數據被檢索時進度對話框工作。AsyncTask progressdialog不顯示,doInBackground阻止UI
我用這個鏈接Implement android splash screen while loading data讓我開始,但似乎我無法讓它正常工作。
到目前爲止,它沒有顯示任何進度條,因爲我認爲funcion fillMyTickets阻塞UI線程,因此對話框不顯示。我不明白如何解決這個問題。通過閱讀Stackoverflow,我發現瞭解決方案,比如在AsyncTask中使用onProgressUpdate函數,但那不是我想要的。我需要的是一個等待的對話框,表示在HTTP呼叫結束時下載並消失。
的AsyncTask功能exampleFragment.java
private ProgressDialog dialog;
private class PrefetchData extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(getActivity());
dialog.setMessage("Downloading..");
dialog.setIndeterminate(true);
dialog.setCancelable(true);
dialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
fillMyTickets();
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
dialog.dismiss();
}
fillMyTickets功能exampleFragment.java
private void fillMyTickets() {
HttpReader httpReader = new HttpReader();
httpReader
.setOnResultReadyListener(new HttpReader.OnResultReadyListener() {
@Override
public void resultReady(String result) {
JsonHelper jsonHelper = new JsonHelper();
tickets = jsonHelper.getTickets(result);
}
});
httpReader
.execute(url);
}
onAttach(活動性)其中執行的AsyncTask功能
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
new PrefetchData().execute();
}
而且在評論dialog.dismiss() onPostExecute的AsyncTask時對話框不顯示,但然後ofcourse永遠不會關閉。
你能展示你如何執行任務嗎? – codeMagic
確保你在UI線程上調用'new PrefetchData()。execute()'(也許在你的''onClick''處理程序中,然後你應該擁有你想要的。) – kiruwka
它必須自動加載。 – Niels