Я использую AsyncTask и довольно обычный Android-код для получения содержимого удаленной веб-страницы. На основе этого возвращаемого содержимого я могу позвонить другой странице.Android-приложение: вызов AsyncTask дважды?
http://developer.android.com/reference/android/os/AsyncTask.html
Мои отладки линии должны печатать, как это:
1> StartA()
2> onPreExecute
3> doInBackground
4> onPostExecute Note: Code here will call EndA()
5> EndA()
6>
7> StartB()
8> onPreExecute
9> doInBackground
10> onPostExecute Note: Code here will call EndB()
11> EndB()
Это невозможно сделать? Я заставляю все вышеперечисленное работать ... ЗА ИСКЛЮЧЕНИЕМ Я получаю один дополнительный вызов EndB(), который появляется между строками 8 и 9.
Я не могу на всю жизнь понять, почему. Кажется, что он не должен вызывать EndB() дважды. И это, безусловно, не должен вызываться ДО 9 и 10.
private void StartA()
{
Debug("StartA()");
g_GetWhat = 1;
DownloadWebPageTask task = new DownloadWebPageTask();
task.execute(new String[] { "http://google.com" });
}
private void EndA()
{
Debug("EndA()");
StartB();
}
private void StartB()
{
Debug("StartB()");
g_GetWhat = 2;
DownloadWebPageTask task = new DownloadWebPageTask();
task.execute(new String[] { "http://yahoo.com" });
}
private void EndB()
{
Debug("EndB()");
}
////////////////////////////// /////////////////////
private class DownloadWebPageTask extends AsyncTask<String, Void, String>
{
protected void onPreExecute()
{
Debug("onPreExecute()");
}
protected String doInBackground(String... urls)
{
Debug("doInBackground()");
}
protected void onPostExecute(String result)
{
Debug("onPostExecute()");
if(g_GetWhat == 1) { EndA(); }
if(g_GetWhat == 2) { EndB(); }
}
}
Как говорится в документе: «Задача может быть выполнена только один раз (при попытке выполнить второе выполнение будет выбрано исключение).« –
Итак, я могу * НИКОГДА не выполнять его дважды? Пользователь должен выйти из всего приложения и запустить его позже? Что хорошего «о, вы уже использовали этот код, вы НИКОГДА его не используете»?) – Carol
Я не вижу никакого «исключения». – Carol