Привет У меня есть вопрос об Android AsyncTask. У меня есть фрагмент внутри Activity. Этот фрагмент вызывает AsyncTask, где он делает что-то тяжелое и обновляет пользовательский интерфейс в onPostExecute(). Мой вопрос в том, что. Говорят, что пользователь открыл активность. Теперь фрагмент присоединен и вызывается функция doInBackground() AsyncTask. Затем пользователь внезапно нажимает кнопку «Назад», чтобы закрыть активность. Теперь, что происходит с исполнением в потоке AsyncTask? Линия также умирает, как только активность закрыта? Или у меня есть ручная проверка onPostExecute, добавлен ли этот фрагмент, используя isAdded() в начале onostExecute()? Спасибо!Android - Simple AsyncTask
EDIT
В моем фрагменте, я объявляю AsyncTask() неявно .. как это
new AsyncTask<String, Void, Boolean>() {
@Override
protected Boolean doInBackground(String... params) {
return processPlays(plays);
}
@Override
protected void onPostExecute(Boolean result) {
if (!isAdded()) return; // IS THIS FINE?
// UPDATE UI
}
}.execute();
Да ... вот почему я возвращаюсь (!); в начале onPostExecute(); См. Прилагаемый код. Это безопасно? – user2062024
Да. Это безопасно. Примечание. «isAdded» не обязательно означает, что фрагмент не существует или не будет добавлен позже, поэтому рекомендуется сохранять состояние независимо и обновлять интерфейс, если это необходимо. – DeeV