Фиктивное местоположение на Xiaomi: MIUI и HyperOS
Жалоба «включаю подмену, через пару минут всё возвращается» почти всегда приходит с телефонов Xiaomi, Redmi и POCO. Причина не в приложении: MIUI и HyperOS управляют фоновыми процессами жёстче, чем «чистый» Android, и выгружают сервис, который держит подмену. Ниже — что именно происходит и какие три настройки это лечат.
Включите автозапуск для приложения
Настройки → Приложения → Все приложения → Mock Location → «Автозапуск» (на части версий — «Запуск в фоне»). Это самая важная настройка из трёх: без неё система, убив процесс, не станет поднимать его заново, и подмена не восстановится, пока вы не откроете приложение вручную.

Снимите ограничения батареи
На том же экране приложения найдите «Экономия батареи» или «Контроль активности» и выберите «Без ограничений». В этом режиме прошивка перестаёт усыплять фоновый сервис по своему усмотрению.

Закрепите приложение в списке недавних
Откройте список недавних приложений, потяните карточку Mock Location вниз — появится значок замка. Закреплённые приложения не закрываются при очистке списка «крестиком» или свайпом «убрать всё».

Проверьте, что подмена держится
Включите подмену, сверните приложение и оставьте телефон в покое на десять-пятнадцать минут. Затем проверьте: уведомление в шторке должно остаться на месте, а стороннее картографическое приложение — по-прежнему показывать выбранную точку.

Что происходит под капотом
Прошивка убивает процесс приложения — в системных журналах это видно как принудительное завершение по решению системы. После этого тестовые провайдеры остаются зарегистрированными в Android с последним записанным значением, но новые координаты в них никто не пишет: процесс, который их создал, больше не существует.
Снаружи это выглядит как «подмена зависла»: координата держится прежней, но перестаёт обновляться, а через некоторое время система возвращает реальное местоположение.
Что приложение делает само
Два механизма восстановления работают независимо от настроек прошивки. Первый: при открытии приложение сверяет сохранённое состояние с фактическим и, если процесс умирал, заново поднимает подмену — этот путь надёжен всегда. Второй: сторожевой таймер периодически проверяет состояние в фоне и пытается поднять сервис сам.
Но у обоих есть предел: если прошивка запрещает приложению стартовать в фоне, поднять сервис без вашего участия невозможно — код в этот момент просто не выполняется.
Почему автозапуск важнее остальных настроек
Разница измерима. С выключенным автозапуском система после убийства процесса не перезапускает сервис вовсе — восстановление происходит только когда вы сами откроете приложение. С включённым автозапуском система поднимает убитый сервис примерно за три секунды, приложение подхватывает сохранённое состояние и продолжает подмену без вашего участия.
Поэтому если из трёх настроек делать только одну — делайте автозапуск.
Восстановление после перезагрузки
Активная подмена восстанавливается автоматически при загрузке телефона, причём по самому раннему системному событию — ещё до того, как вы разблокируете экран. На телефоне с PIN-кодом это единственный способ вернуть подмену, не дожидаясь, пока вы возьмёте телефон в руки.
Замер на реальном устройстве с HyperOS показал, зачем это нужно: ранняя очередь событий загрузки доходит до приложения за секунду с небольшим, тогда как обычная — за семнадцать секунд, потому что впереди стоят системный апдейтер, облачные сервисы и банковские приложения.
Те же настройки на других прошивках
Похожее поведение встречается у Huawei (Настройки → Батарея → Запуск приложений → отключить автоматическое управление для приложения), Samsung (Настройки → Обслуживание устройства → Батарея → Ограничения фоновой активности), OPPO, realme и vivo. Названия отличаются, смысл один: разрешить приложению работать в фоне и исключить его из агрессивной экономии батареи. Если подмена всё равно слетает — разбор частых причин.