Сброс активности Android после сделанного снимка (ориентация?)

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

В этом упражнении у меня есть AsyncTask, который может успешно загружать фотографии. Так в чем моя проблема, вы можете спросить. Моя проблема в том, что она воссоздает мою деятельность и поэтому сбрасывает мой ProgressDialog вместе с ней. (Он запускает действие, делает aSyncTask, умирает, прежде чем он сможет закончить его, и снова создаст мою активность, чтобы снова выполнить асинтекс.)

Это не всегда так. Я думаю, что он делает это, потому что он меняет ориентацию с телефона от «Пейзаж к портрету». (У меня есть Samsung. Когда я иду в камеру, он меняется на пейзаж, и когда я заканчиваю его, он возвращается к портрету.)

Я уже сделал домашнее задание и добавил эти вещи к моему манифесту:

android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" > 

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

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

Проверка, о которой я говорю, это использовать:

 protected void onSaveInstanceState(Bundle outState) { outState.putString("started", "1"); } 

В любом случае, кто-нибудь может мне помочь? Я просто хочу, чтобы он загружал активность без его самоуничтожения на мне.

PS: У VM нет никаких проблем. VM загружает активность и завершает ее без повторного создания.

PPS: Был ли дополнительный тест на моем Samsung, если я сохраню его в ландшафтном режиме, он будет работать. Таким образом, это определенно камера, которая разрушает мою деятельность с ее ориентацией.

У меня была такая же проблема, оказывается, вам также нужно слушать изменения размера экрана в API-уровне 13 или выше, как объясняется здесь; https://stackoverflow.com/a/11483806

 android:configChanges="orientation|screenSize" 

Попробуйте создать активность фрагмента, чтобы обрабатывать отображение и обновление диалогового окна выполнения

В работе с фрагментом убедитесь и установите «setRetainInstance (true)»; Это гарантирует, что он не будет уничтожен, когда основное действие будет создано / уничтожено.

Вероятно, неплохо было бы поместить весь процесс захвата изображения внутри этого фрагмента, включая асинтез. Убедитесь, что вы не ссылаетесь на контекст родительской активности из doInBackground () в AsyncTask. Если вы сделаете это и измените ориентацию (то есть, деятельность будет уничтожена), это вызовет ошибку.

Вот пример:

 public class MyFragment extends FragmentActivity { private ProgressBar mProgressBar; private boolean mAsyncTaskActive = false; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setRetainInstance(true); // grab reference to progress bar mProgressBar = (ProgressBar) getActivity().findViewById(R.id.my_progress_bar); // check to see if the async task is active and set the progress bar visibility accordingly if (mAsyncTaskActive) { mProgressBar.setVisibility(View.VISIBLE); mProgressBarText.setVisibility(View.VISIBLE); } } // this method is called from your main activity when the user does something (ie clicks a button) // make sure you have already instantiated the fragment public void startSomething() { if (mAsyncTaskActive == false) { mProgressBar.setVisibility(View.VISIBLE); new MyAsyncTask().execute(); mAsyncTaskActive = true; } } private class MyAsyncTask extends AsyncTask<Void, Void, Void> { Context applicationContext; @Override protected Void doInBackground(String... params) { // do stuff publishProgress(//some number); return null; } @Override protected void onProgressUpdate(Integer... progress) { setProgressPercent(progress[0]); } } 

Вы также должны посмотреть, как реализовать фрагменты, если вы еще не знакомы. В блоге Android dev есть хорошая статья о DialogFragments, таких же приоритетах. http://android-developers.blogspot.com/2012/05/using-dialogfragments.html

Чтобы это исправить, я должен был использовать следующее в моем файле манифеста:

 android:screenOrientation="portrait" android:launchMode="singleTop" android:configChanges="keyboardHidden|orientation|screenSize" 
Intereting Posts
Невозможно открыть звуковое устройство: Недействительная или неподдерживаемая работа аудиоустройства Получить последний загруженный URL-адрес веб-обозревателя без использования webView.goBack () в Android Невозможно разрешить символ: FusedLocationProviderClient. Используемая версия игровых сервисов 11.0.1 Сохранение списка в списке фрагментов при изменении ориентации Установите текст Gujarati на Spinner в Android Изменение стиля Android Holo Light в зависимости от выбранного контекста Обнаружение MMS-сообщений на Android Анимация в начале действия пропускает кадры В чем разница между планированием одной задачи с помощью диспетчера аварийных сигналов и ScheduledExecutorService Отправка файла Bluetooth для Android Где я должен помещать файлы ttf в проект Android? Минимальные размеры макетов Android Получить данные последнего журнала вызовов после завершения вызова с помощью широковещательного приемника Ошибка компоновщика Android-Studio от Engel Отключить скриншот в приложении для Android