Ответ 1
Попробуйте добавить этот атрибут android:configChanges="orientation"
к элементу Activity
в файле AndroidManifest.xml
.
Я показываю ProgressDialog
в методе onPreExecute
объекта AsyncTask и отменяю ProgressDialog в методе onPostExecute
. В методе doInBackground
я делаю HTTP-запрос для регистрации пользователя. Я хочу разрешить изменения ориентации экрана. Когда я изменяю ориентацию, пока метод doInBackground
все еще работает, я получаю всевозможные забавные ошибки, такие как "IllegalArgumentException: вид не подключен к оконному менеджеру" и "RegisterScreen имеет просочившееся окно..."
Как я могу продолжать показывать ProgressDialog
после изменения ориентации? Или, может быть, как я могу отключить изменение ориентации после того, как пользователь попросит отправить свою регистрацию?
Попробуйте добавить этот атрибут android:configChanges="orientation"
к элементу Activity
в файле AndroidManifest.xml
.
Вы можете попробовать отключить изменения ориентации во время отображения ProgressDialog
.
в начале:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
и включить после завершения:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
Надеюсь, что это поможет.
(Если у кого-то есть правильное решение, мне также будет интересно: -)
Вы хотите правильно обрабатывать жизненный цикл активности, что означает сохранение и восстановление состояния вашей деятельности, а не попытки предотвратить изменения жизненного цикла. Сделайте некоторое чтение в AsyncTask по сравнению с жизненным циклом активности.
Например: pause-and-resume-asynctasks-android и what-to-do-with-asynctask-in-onpause.
Добавьте это в тег активности в application manifest.xml
<activity android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation|screenSize"
android:name=".your.package"/>
В моем случае я использовал
android:configChanges="orientation"
но это не сработало для меня
Далее работает нормально
<activity android:name=".MyActivity"
android:configChanges="orientation|screenSize|screenLayout">
</activity>
Вы можете использовать следующий код в вашем манифесте
<activity android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:name=".your.package">