Android AsyncTask Запуск другого AsyncTask - PullRequest
5 голосов
/ 19 июня 2011

В настоящее время я делаю что-то подобное в методе AsyncTask onPostExecute, где NewTask равно , а не текущая задача, которая выполняется:

private class OlderTask extends AsyncTask<String, Void, Integer> {
    //other functions (not important)

    @Override
    protected void onPostExecute(Integer result) {
        new NewTask().execute(null, null);
    }
}

Мне интересно,плохая идеяПриведет ли это к тому, что GC для OlderTask будет ждать NewTask?Есть ли другие возможные проблемы с использованием такого подхода?

И если это проблема, как я могу ее исправить?

Ответы [ 2 ]

3 голосов
/ 19 июня 2011

Если NewTask не является внутренним нестатическим классом в OlderTask, это не помешает GC собрать OlderTask, если вы не сохраните ссылку на него другим способом.

Но даже если GC будет ждать, пока NewTask не будет выполнено, это не должно иметь большого значения, если вы не сохраните много данных в OlderTask или не создадите много копий OlderTask.

Так что, если ваш дизайн требует этого, все в порядке. Но это, безусловно, чище, чтобы не иметь цепных задач.

0 голосов
/ 24 июня 2011

Я использую метод обратного вызова, поэтому, когда результат приходит к onPostExecute, я вызываю другой AsynkTask из пользовательского интерфейса, я думаю, что это хорошая идея, дайте мне знать, что вы думаете.

...