چرا جعل موقعیت روی Xiaomi در پسزمینه خودبهخود خاموش میشود؟
MIUI و HyperOS (Xiaomi، Redmi، POCO) برنامههای پسزمینه را سختگیرانهتر از بقیه میبندند. شروع خودکار را برای Mock Location روشن کنید و محدودیتهای باتری را بردارید؛ برنامه در اجرای نخست همین را پیشنهاد میدهد.
جعل موقعیت را یک سرویس پسزمینه نگه میدارد و «خودبهخود خاموش شد» تقریباً همیشه یعنی رابط سازنده آن را بسته است. در گزارشهای سیستم این به شکل توقف اجباری فرایند به دست سیستم دیده میشود، نه خطای برنامه.
سپس چیزی غیرمنتظره رخ میدهد: ارائهدهندههای آزمایشی با آخرین مقدار نوشتهشده در اندروید ثبتشده میمانند، اما کسی مختصات تازه در آنها نمینویسد؛ فرایندی که آنها را ساخته دیگر وجود ندارد. از بیرون این شبیه «جعل موقعیت یخ زد» است: نقطه همان میماند اما بهروز نمیشود و پس از مدتی سیستم مکان واقعی را برمیگرداند. برای همین مشکل اغلب فوراً دیده نمیشود.
دارندگان Xiaomi، Redmi و POCO بیشتر از همه به این برمیخورند: MIUI و HyperOS فرایندهای پسزمینه را سختگیرانهتر از بقیه مدیریت میکنند. با سه تنظیم درست میشود: شروع خودکار، برداشتن محدودیتهای باتری و قفل کردن برنامه در برنامههای اخیر؛ راهنمای کامل با مسیرهای دقیق در راهنمای جداگانه Xiaomi آمده است. اگر فقط یکی از سه را انجام میدهید، شروع خودکار را انجام دهید: بدون آن، پس از بسته شدن فرایند، سیستم سرویس را اصلاً برنمیگرداند و جعل موقعیت تا وقتی خودتان برنامه را باز نکنید برنمیگردد. با شروع خودکار روشن، سیستم سرویس را ظرف چند ثانیه برمیگرداند و برنامه وضعیت ذخیرهشده را برمیدارد و بیدخالت شما ادامه میدهد.
در Samsung علت همین است، اما سازوکار «برنامههای در خواب» نام دارد: One UI هر چیزی را که مدتی استفاده نکردهاید خودکار به خواب میبرد و برنامه جعل موقعیت دقیقاً وقتی تلفن در جیب شماست بیکار به نظر میرسد. مسیرهای One UI در راهنمای Samsung آمده است. در Huawei و Honor مدیریت خودکار راهاندازی را خاموش و هر سه کلید، یعنی شروع خودکار، راهاندازی ثانویه و اجرا در پسزمینه را روشن کنید؛ جزئیات در راهنمای Huawei.
برنامه هم از طرف خود دو کار مستقل میکند. هنگام باز شدن، وضعیت ذخیرهشده را با وضعیت واقعی مقایسه میکند و اگر فرایند از بین رفته باشد، جعل موقعیت را برمیگرداند؛ این راه همیشه کار میکند. افزون بر آن، یک زمانسنج نگهبان گاهبهگاه وضعیت را در پسزمینه بررسی میکند و خودش سعی میکند سرویس را برگرداند. اما هر دو حدی دارند: اگر رابط سازنده اجرای برنامه در پسزمینه را ممنوع کند، سرویس بدون شما برنمیگردد؛ کد در آن لحظه اصلاً اجرا نمیشود. پس تنظیمات رابط سازنده را نمیتوان با برنامه جایگزین کرد.
سادهترین راه بررسی نتیجه، اعلان دائمی در کشوی اعلان است: تا وقتی هست، سرویس زنده است. اگر رفت، سیستم بالاخره سراغش آمده و باید به تنظیمات بالا برگردید.