Чаму на Xiaomi падмена сама адключаецца ў фоне?
MIUI і HyperOS (Xiaomi, Redmi, POCO) выгружаюць фонавыя праграмы больш агрэсіўна, чым іншыя. Уключыце аўтазапуск для Mock Location і зніміце абмежаванні батарэі — праграма прапануе гэта пры першым запуску.
Падмену трымае фонавы сэрвіс, і «адключылася сама» амаль заўсёды азначае, што яго закрыла прашыўка. У сістэмных логах гэта відаць як прымусовае спыненне працэсу сістэмай, а не як памылка праграмы.
Далей адбываецца неачавіднае: тэставыя правайдары застаюцца зарэгістраванымі ў Android з апошнім запісаным значэннем, але новыя каардынаты ў іх ніхто не піша — працэсу, які іх стварыў, ужо няма. Звонку гэта выглядае як «падмена завісла»: кропка тая ж, але перастае абнаўляцца, а праз нейкі час сістэма вяртае сапраўднае месцазнаходжанне. Таму праблему часта заўважаюць не адразу.
Уладальнікі Xiaomi, Redmi і POCO сутыкаюцца з гэтым часцей за іншых: MIUI і HyperOS кіруюць фонавымі працэсамі строжэй. Лечыцца гэта трыма наладамі — аўтазапуск, зняцце абмежаванняў батарэі і замацаванне праграмы ў нядаўніх; разбор з дакладнымі шляхамі — у асобнай інструкцыі для Xiaomi. Калі робіце толькі адну з трох — рабіце аўтазапуск: без яго пасля закрыцця працэсу сістэма зусім не верне сэрвіс, і падмена не вернецца, пакуль вы самі не адкрыеце праграму. З уключаным аўтазапускам сістэма падымае сэрвіс за лічаныя секунды, праграма падхоплівае захаваны стан і працягвае без вашага ўдзелу.
На Samsung прычына тая ж, але механізм называецца «Праграмы ў рэжыме сну»: One UI аўтаматычна ўсыпляе тое, чым вы даўно не карысталіся, а праграма падмены выглядае бяздзейнай якраз тады, калі тэлефон ляжыць у кішэні. Шляхі для One UI — у інструкцыі для Samsung. На Huawei і Honor выключыце аўтаматычнае кіраванне запускам і ўключыце ўсе тры пераключальнікі — аўтазапуск, ускосны запуск і працу ў фоне; падрабязнасці — у інструкцыі для Huawei.
Са свайго боку праграма робіць дзве незалежныя рэчы. Пры адкрыцці яна зверывае захаваны стан з фактычным і, калі працэс загінуў, вяртае падмену — гэты шлях спрацоўвае заўсёды. Акрамя таго, вартавы таймер перыядычна правярае стан у фоне і спрабуе аднавіць сэрвіс сам. Але ў абодвух ёсць мяжа: калі прашыўка забараняе праграме стартаваць у фоне, вярнуць сэрвіс без вас нельга — код у гэты момант проста не выконваецца. Таму налады прашыўкі праграмна не замяніць.
Праверыць вынік прасцей за ўсё па пастаянным апавяшчэнні ў шторцы: пакуль яно ёсць, сэрвіс жывы. Калі знікла — сістэма ўсё ж дабралася да яго, і варта вярнуцца да налад вышэй.