Comments 22
А теперь переверните устройство :)
Если у Вас AsyncTask запускается в onCreate Activity — получите ошибку.
если у него в манифесте правильно описан параметр «configChanges», то ничего он не получит.
Проверил — ошибка есть.
Как лучше исправить, перенести запуск в onResume или configChanges мучать?
Если по фэншую — то в onResume.
Но я чаще не парюсь и пользуюсь configChanges. Хотя в блоге Андроида сказано использовать только в крайних случаях.
Не знаю, ребята, о чем вы, но при android:configChanges=«keyboardHidden|orientation», ни эмулятор 1.6, ни Desire 2.2 при многочисленных переворотах во время выполнения вышеописанного кода у меня не вывалились с ошибкой.
Если у Вас не игра (которые не все готовы к повороту), то я не вижу смысла блокировать поворот в приложении для пользователя. А на планшетах под Андроидом это очень даже раздражает :)
Ну это не совсем блокировка поворота, это блокировка «перезагрузки» Activity при повороте. Сам интерфейс разворачивается при этом нормально. Это не выход, если вы используете разные layout для landscape и portrait, но в иных ситуациях это очень хороший способ избавится от геморроя с сохранением состояния.
Геморой? В чем? В что надо, так это понять, что асинхронный таск никуда не девается при повороте, в то время как активити перестраивается.
Думаю для начала нужно почитать доку про поворот устройства (что там происходит с Activity).
Есть такой простой компонент, как сервис, который призван выполнять задачи по отправке запросов в сеть. И никаких костылей с «configChanges» (а это на самом деле костыль) делать не придется.
Проверил — ошибка есть.
Как лучше исправить, перенести запуск в onResume или configChanges мучать?
Вместо Runnable можно воспользоваться паттерном Listener или просто сделать HttpClient inner-классом SearchableActivity, тогда можно будет вызывать методы SearchableActivity из HttpClient напрямую.
Если java не родной язык, то можно попробовать Scala. Под андроид я пишу на ней, синтаксис намного удобнее жавовского.
UFO landed and left these words here
Не могли бы вы поподробней обьяснить как вызвать метод Run() родительского класса, по окончании выполнения треда.
Конструкция ((Runnable)ctx).run(); у меня почему то отказываеться работать. Возможно нужно вручную указывать контекст родительского класса?
Only those users with full accounts are able to leave comments. Log in, please.