在我的应用程序中,我需要像这样调用for循环中的AsyncTask
protected void runSearch(String query) {
for (int i = 0; i < MAX_RESULT_COUNT; i += PAGE_SIZE) {
try {
String s = SEARCH_ENDPOINT + "&q="
+ URLEncoder.encode(query, "UTF-8") + "&start=" + i;
// Toast.makeText(this, "qUERY>> " + s + "",
//
// Toast.LENGTH_SHORT).show();
System.out.println("THISI SSS>>>>> ss" + s + "");
String se = SEARCH_ENDPOINT + "&q="
+ URLEncoder.encode(query, "UTF-8") + "&start=" + i;
Get_Images get_images = new Get_Images();
get_images.execute(se);
} catch (UnsupportedEncodingException e) {
// TODO: handle error
}
}
}
类Get_Images
public class Get_Images extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Please wait...");
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected Void doInBackground(String... params) {
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
if (pDialog.isShowing())
{
pDialog.dismiss();
}
if (ThumbImage != null) {
//Adpter fill
}
}
}
问题是它不会忽略进度对话框。如果它创建了3个对话框,则不会忽略它们中的任何一个。
请求帮助 谢谢,
答案 0 :(得分:0)
我认为通过在AsyncTask
循环中调用for
,它可能会启动另一个任务,而前一个任务仍在doInbackground()
中,这会导致多个进度因此而运行:
pDialog = new ProgressDialog(getActivity());
您将参考上次开始的进度,因此致电 解雇只会隐藏最后一个,而其他X进度将保持活动。
所以,要么:
for loop
并在最后一次asyncTask onPostExecute()
处停止
醇>
或
doInBackground()
内的for循环移动为@StackOverflowUser声明