Фіктивне місцезнаходження на Xiaomi: MIUI і HyperOS
Скарга «вмикаю підміну, а за пару хвилин усе повертається» майже завжди надходить від власників Xiaomi, Redmi й POCO. Причина не в застосунку: MIUI і HyperOS керують фоновими процесами суворіше, ніж чистий Android, і вивантажують сервіс, який тримає підміну. Нижче — що саме відбувається і які три налаштування це виправляють.
Увімкніть автозапуск для застосунку
Налаштування → Застосунки → Керування застосунками → Mock Location → «Автозапуск» (у деяких версіях — «Робота у фоні»). Це найважливіше з трьох налаштувань: без нього після вивантаження процесу система не поверне його, і підміна не відновиться, доки ви не відкриєте застосунок вручну.

Зніміть обмеження батареї
На тому самому екрані застосунку знайдіть «Економія заряду» або «Контроль активності» й виберіть «Без обмежень». У цьому режимі прошивка перестає присипляти фоновий сервіс на власний розсуд.

Закріпіть застосунок у недавніх
Відкрийте список недавніх застосунків і потягніть картку Mock Location униз — з’явиться значок замка. Закріплені застосунки не закриваються, коли ви очищаєте список хрестиком або свайпом «прибрати все».

Перевірте, що підміна тримається
Увімкніть підміну, згорніть застосунок і залиште телефон у спокої на десять-п’ятнадцять хвилин. Потім перевірте: сповіщення має залишатися в шторці, а інший застосунок із мапою — і далі показувати вибрану точку.

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