Так что, когда вы поворачиваете или меняете ориентацию телефона, активность - это единственное, что уничтожается.Вам не обязательно избавляться от асинхронной задачи.На самом деле это будет жить дальше.Только не позволяйте другим задачам входить и работать над ними специально.
Так что, если вы хотите, чтобы ваша активность действовала так, как будто при вращении вы можете начать прямо вверх, где вы остановились, тамэто метод с именем onRetainNonConfigurationInstance ().Это в основном метод, который хранит объекты, которые не могут быть разделены, как в saveInstanceState ()
Так что идея такова:
public void onCreate(Bundle a) {
...
AsyncTask myTask = getNonConfigurationInstance();
if (myTask == null) {
myTask = new AsyncTask();
myTask.execute();
}
...
}
public Object onRetainNonConfigurationInstance() {
return myTask;
}
Это будет поддерживать выполнение асинхронной задачи, и когда вы получитеВаш onCreate вызывается после поворота, вы просто берете его обратно и делаете то, что нужно сделать.
Одна вещь, о которой следует помнить, - это Прогресс прогресса.Он должен быть уничтожен и переинициализирован в новом государстве.Также полное отклонение и показ его в первую очередь должно быть сделано вне AsyncTask.Но ничего не значит, что AsyncTask не может вызвать какой-либо обратный вызов, который вы всегда устанавливаете в своем onCreate (), чтобы он уведомлял об обновлении интерфейса или проигрывании звука завершения и т. Д.