Я использую AsyncTask для вызова веб-службы и предоставления данных, полученных из веб-службы.загрузка занимает так много времени, иногда в asynctask android
это работает нормально, но иногда Progress Dialog не увольняется и не может видеть причину этого в журнале.
Пример :: У меня есть веб-сервис, который вызывался, чтобы получить данные списка с индексацией (для 1 он будет возвращать первые 5 данных и 2 будет возвращать второй 5 данных и так далее)
Как только я нажимаю кнопку 1, он возвращает данные и визуализирует их, и когда я нажимаю кнопку страницы 2, она начинает загружаться и не увольняется. ни данные не отображаются, ни диалог прогресса не отклоняются. теперь я закрыл приложение и снова начал работать, и на этот раз ситуация работала очень хорошо.
Любая помощь будет оценена заранее спасибо
Код для AsyncTask:
public class getList extends AsyncTask<Void, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setCancelable(false);
pDialog.setMessage("Please wait...");
pDialog.setCanceledOnTouchOutside(false);
pDialog.show();
}
@Override
protected String doInBackground(Void... params) {
String text = null;
JSONObject json;
HttpClient httpclient = new DefaultHttpClient();
//Configuration.empcode.trim()
HttpGet httppost = new HttpGet(ListURL+UserCode+"/"+indexNo);
try {
HttpResponse response = httpclient.execute(httppost);
// for JSON:
if (response != null) {
InputStream is = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
// String result = EntityUtils.toString((HttpEntity)
// response);
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
text = sb.toString();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
return text;
}
@Override
protected void onPostExecute(String result)
{
pDialog.dismiss();
if(result!=null)
{
try
{
JSONObject resultObject = new JSONObject(result);
JSONArray resultArray = resultObject.getJSONArray("Table");
for(int i =0;i<resultArray.length();i++)
{
JSONObject resultObjects = resultArray.getJSONObject(i);
Code = resultObjects.getString("Code");
Title = resultObjects.getString("Title");
status= resultObjects.getString("status");
date= resultObjects.getString("date");
TitleList.add(Title);
CodeList.add(Code);
statusList.add(status);
dateList.add(date);
int count = db.getInProgressCount(CourseCode);
if(count==0)
{
db.addInProgress(new InProgressTable(Code,Title,status,date));
}
else
{
db.updateInProgress(new InProgressTable(Code,Title,status,date));
}
}
adapter = new CustomInProgressList(getActivity(),TitleList,CodeList,statusList,dateList);
//adapter.setCustomButtonListner(Catalog_Activity.this);
list.setAdapter(adapter);
scrollMyListViewToBottom(resultArray.length());
int count = db.getAllInProgressCount();
if (adapter.getCount()<1 && count<1){
list.setVisibility(View.GONE);
noRes.setVisibility(View.VISIBLE);
}else {
list.setVisibility(View.VISIBLE);
noRes.setVisibility(View.GONE);
}
if (resultArray.length()<5);
loadMore.setVisibility(View.GONE);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
else
{
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Alert");
builder.setMessage("Data is not available, Please try again later");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
dialog.cancel();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
}
Я использовал множественный AsyncTask в моем приложении. Это проблема?
показать свои коды пожалуйста) –
пожалуйста, напишите код –
@StepanMaksymov см моего пост обновлен –