AsyncTask имеет странную задержку при запуске приложения - PullRequest
0 голосов
/ 22 августа 2011

У меня есть реализация 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});

Я не могу понять, почему это происходит?

РЕДАКТИРОВАТЬ:

Когда приложение запускается в первый раз, оно работает нормально, но когда я открываю приложение на более позднем этапе, первое соединение, показанное выше, выполняет следующее:

  • Запускает диалоговое окно прогресса, а затемЯ не знаю, устанавливает ли он на самом деле соединение, потому что все, что я вижу, это диалоговое окно прогресса, которое никогда не исчезает, другими словами, оно никогда не завершает соединение, потому что, если соединение завершено, диалоговое окно прогресса завершится

1 Ответ

0 голосов
/ 24 августа 2011

Я обнаружил, что проблема заключается в том, что сервер получает запрос, и я добавил таймер для обновления соединения, если это заняло много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...