Dlaczego na Xiaomi symulacja sama wyłącza się w tle?
MIUI i HyperOS (Xiaomi, Redmi, POCO) zamykają aplikacje w tle agresywniej niż inne systemy. Włącz autostart dla Mock Location i zdejmij ograniczenia baterii — aplikacja sama to podpowiada przy pierwszym uruchomieniu.
Symulację utrzymuje usługa w tle, a „wyłączyła się sama” prawie zawsze oznacza, że zamknął ją system. W logach systemowych widać to jako wymuszone zatrzymanie procesu przez system, a nie błąd aplikacji.
Potem dzieje się coś nieoczywistego: testowi dostawcy pozostają zarejestrowani w Androidzie z ostatnią zapisaną wartością, ale nikt nie zapisuje do nich nowych współrzędnych — proces, który je utworzył, już nie istnieje. Z zewnątrz wygląda to jak „symulacja zamarła”: punkt jest ten sam, ale przestaje się aktualizować, a po pewnym czasie system zwraca prawdziwą lokalizację. Dlatego problem często nie jest zauważany od razu.
Najczęściej trafiają na to właściciele Xiaomi, Redmi i POCO: MIUI i HyperOS zarządzają procesami w tle surowiej niż inne systemy. Naprawia się to trzema ustawieniami — autostartem, zdjęciem ograniczeń baterii i przypięciem aplikacji w ostatnich; omówienie z dokładnymi ścieżkami jest w osobnej instrukcji dla Xiaomi. Jeśli zrobisz tylko jedno z trzech, niech to będzie autostart: bez niego po zamknięciu procesu system w ogóle nie przywróci usługi i symulacja nie wróci, dopóki sam nie otworzysz aplikacji. Z włączonym autostartem system przywraca usługę w ciągu kilku sekund, aplikacja odczytuje zapisany stan i działa dalej bez Twojego udziału.
Na Samsungu przyczyna jest ta sama, ale mechanizm nazywa się „Aplikacje uśpione”: One UI automatycznie usypia to, czego dawno nie używałeś, a aplikacja do symulacji wygląda na bezczynną właśnie wtedy, gdy telefon jest w kieszeni. Ścieżki dla One UI są w instrukcji dla Samsunga. Na Huawei i Honor wyłącz automatyczne zarządzanie uruchamianiem i włącz wszystkie trzy przełączniki — automatyczne uruchamianie, uruchamianie pośrednie i działanie w tle; szczegóły w instrukcji dla Huawei.
Aplikacja ze swojej strony robi dwie niezależne rzeczy. Przy otwarciu porównuje zapisany stan z faktycznym i jeśli proces zginął, przywraca symulację — ta droga działa zawsze. Dodatkowo timer kontrolny okresowo sprawdza stan w tle i próbuje sam przywrócić usługę. Ale oba mają granicę: jeśli system zabrania aplikacji startować w tle, usługi nie da się przywrócić bez Ciebie — kod w tym momencie po prostu nie działa. Ustawień systemu nie da się więc zastąpić programowo.
Wynik najłatwiej sprawdzić po stałym powiadomieniu na pasku: dopóki jest, usługa żyje. Jeśli zniknęło, system jednak się do niej dobrał i trzeba wrócić do powyższych ustawień.