У меня есть реализация AsynTask, которая при запуске приложения с устройства задерживается.Эта задержка никогда не возникает при первом запуске, но всегда при первом запуске, поэтому, если я убью приложение и вернусь к нему, скажем, через 6 минут, оно установит соединение и никогда не завершит его.
Вот мой AsyncTask:
private class MakeConnection extends AsyncTask<String, Void, String> {
Context context;
ProgressDialog myDialog;
public MakeConnection(Context conetext)
{
this.context = conetext;
myDialog = new ProgressDialog(this.context);
}
@Override
protected String doInBackground(String... urls) {
String response = "";
for(String url : urls)
{
try
{
URL theUrl = new URL(url);
URLConnection ucon = theUrl.openConnection();
ucon.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while(((current = bis.read()) != -1) && !isCancelled())
{
baf.append((byte)current);
}
response = new String(baf.toByteArray());
}
catch (Exception e)
{
response = e.getMessage();
}
}
return response;
}
@Override
protected void onPostExecute(String result) {
try {
myDialog.dismiss();
success(result);
}catch(JSONException e)
{
data = e.toString();
}
}
@Override
protected void onPreExecute(){
myDialog = ProgressDialog.show(
context,
"Please wait...",
"Loading the data",
true,
true,
new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialog) {
MakeConnection.this.cancel(true);
}
}
);
}
}
А потом в моем onCreate ()
task = new MakeConnection(this);
task.execute(new String[] {url});
Я не могу понять, почему это происходит?
РЕДАКТИРОВАТЬ:
Когда приложение запускается в первый раз, оно работает нормально, но когда я открываю приложение на более позднем этапе, первое соединение, показанное выше, выполняет следующее:
- Запускает диалоговое окно прогресса, а затемЯ не знаю, устанавливает ли он на самом деле соединение, потому что все, что я вижу, это диалоговое окно прогресса, которое никогда не исчезает, другими словами, оно никогда не завершает соединение, потому что, если соединение завершено, диалоговое окно прогресса завершится