Неліктен Xiaomi-де алмастыру фонда өздігінен өшіп қалады?
MIUI мен HyperOS (Xiaomi, Redmi, POCO) фондық қолданбаларды басқаларға қарағанда қатаңырақ жабады. Mock Location үшін автоіске қосуды қосып, батарея шектеулерін алып тастаңыз — қолданба мұны алғаш іске қосқанда өзі ұсынады.
Алмастыруды фондық қызмет ұстап тұрады, ал «өздігінен өшіп қалды» дегені әрқашан дерлік оны микробағдарлама жапқанын білдіреді. Жүйелік журналдарда бұл қолданба қатесі ретінде емес, процесті жүйенің мәжбүрлеп тоқтатуы ретінде көрінеді.
Содан кейін күтпеген нәрсе болады: сынақ провайдерлері Android-та соңғы жазылған мәнмен тіркелген күйінде қалады, бірақ оларға жаңа координаттарды ешкім жазбайды — оларды жасаған процесс енді жоқ. Сырттай бұл «алмастыру қатып қалды» сияқты көрінеді: нүкте сол күйі қалады, бірақ жаңармайды, ал біраз уақыттан кейін жүйе нақты орналасуды қайтарады. Сондықтан мәселе бірден байқалмай жатады.
Бұған Xiaomi, Redmi және POCO иелері жиі тап болады: MIUI мен HyperOS фондық процестерді басқаларға қарағанда қатаңырақ басқарады. Ол үш баптаумен түзетіледі — автоіске қосу, батарея шектеулерін алып тастау және қолданбаны соңғылар тізімінде бекіту; нақты жолдары бар шолу Xiaomi-ге арналған бөлек нұсқаулықта. Үшеуінің біреуін ғана жасасаңыз, автоіске қосуды жасаңыз: онсыз процесс жабылғаннан кейін жүйе қызметті мүлдем қайтармайды, ал қолданбаны өзіңіз ашқанша алмастыру қайтпайды. Автоіске қосу қосулы болса, жүйе қызметті бірнеше секундта қайтарады, қолданба сақталған күйді алып, сіздің қатысуыңызсыз жалғастырады.
Samsung-та себеп сол, бірақ механизм «Ұйықтайтын қолданбалар» деп аталады: One UI біраз уақыт пайдаланбаған нәрсені автоматты түрде ұйықтатады, ал алмастыру қолданбасы дәл телефон қалтада тұрғанда әрекетсіз болып көрінеді. One UI жолдары — Samsung нұсқаулығында. Huawei мен Honor-да іске қосуды автоматты басқаруды өшіріп, үш ауыстырғыштың бәрін қосыңыз — автоіске қосу, жанама іске қосу және фонда жұмыс істеу; толығырақ — Huawei нұсқаулығында.
Өз тарапынан қолданба екі тәуелсіз әрекет жасайды. Ашылғанда ол сақталған күйді нақты күймен салыстырады және процесс өлген болса, алмастыруды қайтарады — бұл жол әрқашан жұмыс істейді. Бұған қоса, бақылаушы таймер фонда күйді мезгіл-мезгіл тексеріп, қызметті өзі қалпына келтіруге тырысады. Бірақ екеуінің де шегі бар: микробағдарлама қолданбаға фонда іске қосылуға тыйым салса, қызметті сізсіз қайтару мүмкін емес — сол сәтте код жай ғана орындалмайды. Сондықтан микробағдарлама баптауларын бағдарламалық жолмен алмастыру мүмкін емес.
Нәтижені тексерудің ең оңай жолы — панельдегі тұрақты хабарландыру: ол тұрғанда қызмет тірі. Ол жоғалса, жүйе бәрібір оған жетті, және жоғарыдағы баптауларға оралу керек.