Почему спустя время приложение перезапускается, если его свернуть?
Работаю с картой. Если свернуть приложение и развернуть его спустя некоторое время, приложение перезапускается. Читал, что если возможность отключить такое поведение, но не могу найти как.
Отслеживать
51.6k 203 203 золотых знака 65 65 серебряных знаков 250 250 бронзовых знаков
задан 19 авг 2021 в 6:35
Svetl9chok Svetl9chok
433 2 2 серебряных знака 13 13 бронзовых знаков
Отключить такое поведение нельзя, так работает система Андроид. Она может прибивать ваше приложение, когда вздумается. Наоброт, чтобы сымитировать такое поведение, во время разработки и тестирования полезно включать Don’t keep activities в настройках разработчика.
19 авг 2021 в 11:56
Если вы хотите восстанавливать состояние вашей Активити, то я в своем ответе привел один из способов, как это можно сделать.
19 авг 2021 в 11:58
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Система Андроид не гарантирует, что приложение не будет выгружено из памяти. Для того, чтобы не терять состояние, необходимо его сохранять.
Рассмотрим простой пример. На экране текст и кнопка. Нажатие на кнопку увеличивает счетчик counter на единицу и вставляет в текст.
public class MainActivity extends AppCompatActivity < private TextView textView; private Button button; private int counter; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button.setOnClickListener(v ->< counter++; updateViews(); >); > private void updateViews() < textView.setText(String.valueOf(counter)); >>
Каждое нажатие на кнопку — это пользовательский ввод, к нему нужно относиться бережно и не терять то, что вводил пользователь.
Если мы свернем приложение, система Андроид может прибить процесс нашего приложения, если посчитает нужным (например, если на телефоне будет заканчиваться память). Пользовательский ввод будет утерян безвозвратно.
Чтобы устранить этот недостаток, в Активити переопределяем onSaveInstanceState() и сохраняем все, что нам нужно. В нашем случае это текущее состояние счетчика:
@Override protected void onSaveInstanceState(Bundle state)
Восстанавливаем значение счетчика в методе onCreate() :
@Override protected void onCreate(Bundle savedInstanceState) < . if (savedInstanceState != null) < counter = savedInstanceState.getInt("com.example.counter"); updateViews(); >>
Если вы хотите проверить, как будет вести приложение при нехватке памяти, включите на устройстве режим Don’t keep activities («Не сохранять операции») в настройках разработчика.
В таком режиме вы сразу увидите все недостатки вашего приложения при сворачивании и разворачивании.
Как отключить опцию «Do not keep activities» в смвртфоне на базе Андроид?
На смартфоне НТС выскакивает окно с такой надписью: The option «Do not keep activities» (also called «immediately destroy activities») is set ON in Android Developer Options. The option «Do not keep activities» is a developer option and should not be set under normal user-conditions. Not run with this option set ON.
Телефон ребёнка. Может он загрузил чего не то или накрутил не там. Я не нашёл где она отключается.
Голосование за лучший ответ
настройки — функции для разработчиков — сними все галочки — перезагрузи девайс
Решение проблем при разработке под Android
Unity не удаётся установить ваше приложение на ваше устройство
- Убедитесь, что ваш компьютер видит ваше устройство и может взаимодействовать с ним. Для деталей см. Публикация сборок.
- Проверьте консоль Unity на наличие сообщений об ошибках. Это часто помогает в определении проблемы.
Если у вас появляется ошибка “Unable to install APK, protocol failure” во время сборки, то это значит, что ваше устройство подключено через USB-порт с низким питанием (возможно порт на клавиатуре или ещё на какой-нибудь периферии). Если такое случается, то попробуйте подсоединить устройство в USB порт на самом компьютере.
Ваше приложение падает сразу после запуска.
- Убедитесь, что вы не пытаетесь использовать NativeActivity с устройствами, которые это не поддерживают.
- Попробуйте убрать все нативные плагины, что у вас есть.
- Попробуйте отключить stripping.
- Используйте adb logcat чтобы получить отчёт о крахе с вашего устройства.
Building DEX Failed
Это ошибка, которая выдаёт сообщение, вроде следующего:-
Building DEX Failed! G:\Unity\JavaPluginSample\Temp/StagingArea> java -Xmx1024M -Djava.ext.dirs="G:/AndroidSDK/android-sdk_r09-windows\platform-tools/lib/" -jar "G:/AndroidSDK/android-sdk_r09-windows\platform-tools/lib/dx.jar" --dex --verbose --output=bin/classes.dex bin/classes.jar plugins Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
Обычно это вызвано неверной версией Java на вашем компьютере. Обновление Java до последней версии обычно решает проблему.
Приложение падает через несколько секунд после начала проигрывания видео.
Убедитесь, что Settings->Developer Options->Don’t keep activities не включено на вашем телефоне. Проигрыватель видео — это отдельное приложение и поэтому обычное игровое приложение будет закрыто, если проигрыватель видео включён.
Моя игра закрывается, когда я жму кнопку сна
Измените тег activity в файле AndroidManifest.xml так , чтобы он содержал тег android:configChanges , сделайте это таким образом, как описано здесь.
Пример тега activity может выглядеть, например, вот так:-
Зачем нужна настройка Do Not Keep Activities?
Чтобы правильно ответить на данный вопрос, надо хорошо знать программы, а так же знать, что эти программы делают. Поискав в интернете информацию, могу сказать, что программа для перехвата трафика называется Wireshark, значит вариант ответа 2 нам не подходит.
Фраза Do Not Keep Activities переводится, как «Не сохранять операции». Программа для меня очень сложная, но благодаря ей можно проверить приложение.
А вот как называется программа для тестирования при медленном интернете, я вообще не нашла и есть ли такие, не знаю.
Поэтому верный вариант будет: Для проверки соответствия приложения activity lifecycle
автор вопроса выбрал этот ответ лучшим
комментировать
в избранное ссылка отблагодарить
Алиса в Стран е [378K]
4 года назад
Кролик Олег, по всей видимости, видимо очень умный, раз стикеры с его изображением так трудно получить, вопросы просто сумасшедшие какие-то для человека, никак не связанного непосредственно с определенного рода деятельностью. Это приложение нужно, чтобы проверять соответствие приложения activity lifecycl. На данный вопрос нужно выбрать ответ под цифрой три, кстати, если хорошенько подумать на вопрос довольно легко ответить методом логического исключения, не ища ответа в интернете, потому что ответы под номерами один и два не очень-то правдоподобны, поэтому смело отвечаем: ответ под номером три: