مکان ساختگی در Xiaomi: MIUI و HyperOS
شکایت «جعل موقعیت را روشن میکنم و چند دقیقه بعد همه چیز برمیگردد» تقریباً همیشه از تلفنهای Xiaomi، Redmi و POCO میآید. علت برنامه نیست: MIUI و HyperOS فرایندهای پسزمینه را سختگیرانهتر از اندروید خام مدیریت میکنند و سرویسی را که جعل موقعیت را روشن نگه میدارد میبندند. در ادامه میبینید دقیقاً چه اتفاقی میافتد و کدام سه تنظیم آن را درست میکند.
شروع خودکار را برای برنامه روشن کنید
تنظیمات ← برنامهها ← مدیریت برنامهها ← Mock Location ← «شروع خودکار» (در برخی نسخهها «اجرا در پسزمینه»). این مهمترین تنظیم از این سه است: بدون آن، سیستم پس از بستن فرایند آن را برنمیگرداند و جعل موقعیت تا وقتی برنامه را دستی باز نکنید بازیابی نمیشود.

محدودیتهای باتری را بردارید
در همان صفحه برنامه «صرفهجویی باتری» یا «کنترل فعالیت» را پیدا کنید و «بدون محدودیت» را انتخاب کنید. در این حالت رابط سازنده دیگر سرویس پسزمینه را به صلاحدید خودش به خواب نمیبرد.

برنامه را در اخیرها قفل کنید
فهرست برنامههای اخیر را باز کنید و کارت Mock Location را به پایین بکشید تا نماد قفل ظاهر شود. برنامههای قفلشده با پاک کردن فهرست با «X» یا کشیدن «پاک کردن همه» بسته نمیشوند.

بررسی کنید جعل موقعیت پایدار میماند
جعل موقعیت را روشن کنید، برنامه را کوچک کنید و تلفن را ده تا پانزده دقیقه به حال خود بگذارید. سپس بررسی کنید: اعلان باید هنوز در کشوی اعلان باشد و برنامه نقشه دیگری باید هنوز نقطه انتخابشده را نشان دهد.

پشت پرده چه اتفاقی میافتد
رابط سازنده فرایند برنامه را میبندد؛ در گزارشهای سیستم این به شکل توقف اجباری به تصمیم سیستم دیده میشود. پس از آن ارائهدهندههای آزمایشی با آخرین مقدار نوشتهشده در اندروید ثبتشده میمانند، اما کسی مختصات تازه در آنها نمینویسد: فرایندی که آنها را ساخته دیگر وجود ندارد.
از بیرون این شبیه «جعل موقعیت یخ زد» است: مختصات همان میماند اما بهروز نمیشود و پس از مدتی سیستم مکان واقعی را برمیگرداند.
برنامه خودش چه میکند
دو سازوکار بازیابی مستقل از تنظیمات رابط سازنده کار میکنند. اول: هنگام باز شدن، برنامه وضعیت ذخیرهشده را با وضعیت واقعی مقایسه میکند و اگر فرایند از بین رفته باشد، جعل موقعیت را برمیگرداند؛ این راه همیشه کار میکند. دوم: یک زمانسنج نگهبان گاهبهگاه وضعیت را در پسزمینه بررسی میکند و خودش سعی میکند سرویس را برگرداند.
اما هر دو حدی دارند: اگر رابط سازنده اجرای برنامه در پسزمینه را ممنوع کند، سرویس بدون شما برنمیگردد؛ کد در آن لحظه اصلاً اجرا نمیشود.
چرا شروع خودکار از تنظیمات دیگر مهمتر است
این فرق قابل اندازهگیری است. با شروع خودکار خاموش، سیستم پس از بستن فرایند اصلاً سرویس را دوباره اجرا نمیکند و بازیابی فقط وقتی رخ میدهد که خودتان برنامه را باز کنید. با شروع خودکار روشن، سیستم سرویس بستهشده را در حدود سه ثانیه برمیگرداند و برنامه وضعیت ذخیرهشده را برمیدارد و بیدخالت شما جعل موقعیت را ادامه میدهد.
پس اگر فقط یکی از سه تنظیم را انجام میدهید، شروع خودکار را انجام دهید.
بازیابی پس از راهاندازی دوباره
مکان ساختگی فعال هنگام روشن شدن تلفن خودکار برگردانده میشود، با زودترین رویداد سیستم؛ حتی پیش از آنکه قفل صفحه را باز کنید. در تلفنی با PIN این تنها راه بازگرداندن جعل موقعیت است، بیآنکه منتظر بماند تلفن را دست بگیرید.
اندازهگیری روی یک دستگاه واقعی با HyperOS نشان داد چرا این مهم است: صف رویداد راهاندازی زودهنگام در کمی بیش از یک ثانیه به برنامه میرسد، اما صف معمول هفده ثانیه طول میکشد، چون بهروزرسان سیستم، سرویسهای ابری و برنامههای بانکی جلوتر در صفاند.
همین تنظیمات در رابطهای دیگر
رفتار مشابهی در Huawei (تنظیمات ← باتری ← راهاندازی برنامه ← خاموش کردن مدیریت خودکار برای برنامه)، Samsung (تنظیمات ← مراقبت از دستگاه ← باتری ← محدودیتهای استفاده در پسزمینه)، OPPO، realme و vivo دیده میشود. نامها فرق دارند، ایده یکی است: اجازه دهید برنامه در پسزمینه اجرا شود و آن را از صرفهجویی تهاجمی باتری بیرون بگذارید. اگر جعل موقعیت باز هم قطع میشود: علتهای رایج.