Жизненный цикл ListAdapter и поворот экрана для отмены AsyncTask
У меня есть asynctask, который я отменяю, когда представление уничтожается через onDestoryView(). Эта проблема, я делаю "downloader.cancel(true);" и это не отменит. На самом деле, он вернет false. В настоящее время он ссылается на ListAdapter для добавления элементов в него. Однако, когда я поворачиваю экран в альбомную ориентацию, ListAdapter становится пустым во время onPostExecute. Я не могу понять, когда ListAdapter становится нулевым. Я пытался и onDestory и onDestoryView отменить асинхронную задачу, прежде чем ListAdapter станет нулевым, но он никогда не работает. Это внутри ListFragment между прочим.
В настоящее время я просто проверяю, является ли адаптер нулевым в асинхронной задаче, но это действительно размалывает мои механизмы. Я бы предпочел просто отменить задачу, прежде чем ListAdapter будет нулевым.
Кто-нибудь знает, когда ListAdapter является нулевым для ListFragment во время поворота экрана?
2 ответа
Отмена AsyncTask не уничтожает поток. В документации по теме вы увидите, что такие методы, как stop
а также destroy
не реализованы. Поэтому, как только метод doInBackground начнет выполняться, он запустится до завершения, даже если задача отменяется с помощью cancel (true). Вам нужно будет кодировать его соответствующим образом.
При изменении ориентации экрана поведение по умолчанию - уничтожить действие и воссоздать его. Поэтому будут вызваны методы OnDestroy и OnCreate. Вы можете отменить это поведение, добавив следующую строчку в активность вашего манифеста:
андроид:configChanges="keyboardHidden| ориентация"
Как это:
<activity
android:name=".YourActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation" >
Вам также необходимо добавить метод onConfigurationChanged в ваш класс деятельности.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); // tem que ter
reconfiguraInterface();
}
После этого OnDestroy и OnCreate не будут вызываться при изменении ориентации.