Как сохранить ссылку на AsyncTask при изменении ориентации

#android #android-activity #android-asynctask

#Android #android-активность #android-asynctask

Вопрос:

Я запускаю AsyncTask из книжной ориентации, затем я изменил ориентацию на альбомную. В данный момент мне нужна ссылка на эту запущенную AsyncTask, чтобы я мог отменить эту задачу.

На самом деле это ситуация:

 @Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.startBtn:
            sampleTaskOne = new SampleAsyncTaskOne(this, sampleTaskCallbacks);
            sampleTaskOne.execute();
            break;
        case R.id.stopBtn:
            sampleTaskOne.cancel(true);
            sampleTaskOne = null;
        default: break;
    }
}
  

Прямо сейчас после изменения ориентации, если я нажму stopBtn, возникнет исключение NullPointerException, потому что sampleTaskOne не инициализирован. Итак, как я могу сохранить ссылку на выполнение AsyncTask?

Пожалуйста, не используйте фрагмент. Не упоминайте это как дубликат «Как использовать asynctask при изменении ориентации» или что-то в этом роде. Я знаю несколько альтернативных решений, но я точно хочу сохранить ссылку на эту AsyncTask.

Ответ №1:

Вы можете сохранить sampleTaskOne как статическую переменную и передать ее null , когда она была завершена или отменена.

Комментарии:

1. что, если мне нужно отслеживать несколько асинхронных задач?