我有一个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});
我不明白为什么会发生这种情况?
编辑:
当应用程序第一次启动时它运行良好,但是当我稍后再打开应用程序时,上面看到的第一个连接会执行以下操作:
答案 0 :(得分:0)
我发现问题在于服务器获取请求,我所做的是添加一个计时器来刷新连接,如果花了很长时间。