我一直在试图让数据被检索时进度对话框工作。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