我跟安卓系统死磕的那几天

折腾这个《日不落帝国安卓》的项目,说白了就是想让自己的App在用户不主动关掉的情况下,它丫的就能一直活着,不被系统随便杀掉

我的需求很简单,我写了一个给自己用的骑行记录软件,就想记录我周末挑战一百公里山路的数据。但每次骑到七八十公里,正喘得跟狗一样的时候,掏出手机一看,数据不动了,App被后台给宰了!气得我差点把手机砸了,这不光是数据没了,我一个周末的努力全白费了。

我傻乎乎的,就用了一个最简单的Service,觉得服务嘛就该在后台待着。结果?安卓系统那个脾气,从8.0开始,特别是到了9.0和10.0,简直就是个暴君。手机一锁屏,或者用户切到别的App去刷短视频,我的服务一眨眼就没了。一刀切,毫不留情。

第一次进阶:前台服务和系统的通知栏

后来我上网查,都说要用“前台服务”(Foreground Service)。行,我照着搞。前台服务说白了就是,你得在系统的通知栏里挂个牌子,告诉用户“我正在运行,别杀我”。我写了一个,是活得久了一点,但那个通知栏的图标,死活不肯走,丑死了!用户一看烦了,直接从通知栏把我App的通知给禁了。通知一禁,前台服务又变回后台服务,立马就被判了死刑。

我琢磨着怎么把这个挂牌子弄得隐秘点。试过把通知栏的优先级调到最低,再把通知图标颜色弄成跟系统背景色差不多,结果还是不行,系统根本不吃这一套,国内那些魔改的ROM(比如小米、华为那些)更是直接给你一刀切。

小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区

第二次进阶:跟系统假装友好

我意识到跟系统硬碰硬不行,得假装友我开始研究那些什么JobScheduler、WorkManager,这些是系统推荐的、相对温顺的后台任务。我把我的骑行任务拆解了:

  • 主要任务: 放在前台服务里,带着那个烦人的通知。
  • 备用任务: 用WorkManager,设置了一个每隔15分钟必须被唤醒一次的定时任务,哪怕只是假装醒来,检查一下主任务有没有被杀掉。

这个操作叫做“定时唤醒”(Periodic Wake-up),它能让系统觉得“这个App好像还有点事要干”,给我续个命。但问题是,这个定时唤醒在国内这些深度定制的ROM上,说不定时就不定时了,屁用没有!

的杀手锏:恳求用户

我被折腾得没脾气了。发现,要想实现这个“日不落帝国”,唯一的办法,就是彻底绕开系统的电池优化机制。

我在App里加了一个弹窗,强行引导用户进入系统的设置界面,恳请用户手动把我加入“电池优化白名单”(就是那个“忽略电池优化”的列表)。你得跟用户说,老哥,你不把我加进去,你的骑行数据肯定会断,我不是流氓App,我是真有需求。

这套连招下来:

  1. 用前台服务撑门面。
  2. 用WorkManager定时“诈尸”做辅助。
  3. 最关键: 靠用户手动设置“白名单”来实现特赦。

只有这三板斧下去,我的骑行App才能在安卓系统那个杀气腾腾的环境里,苟活下来,真正做到“日不落”。这已经不是技术活了,这简直是跟操作系统进行一场心理博弈。为了证明我真骑了一百公里,不让我老婆有理由说我中途偷懒,我操碎了心。这整个过程,比我跑那一百公里累多了!

免责声明:喜欢请购买正版授权并合法使用,此软件只适用于测试试用版本。来源于转载自各大媒体和网络。 此仅供爱好者测试及研究之用,版权归发行公司所有。任何组织或个人不得传播或用于任何商业用途,否则一切后果由该组织及个人承担!我方将不承担任何法律及连带责任。 对使用本测试版本后产生的任何不良影响,我方不承担任何法律及连带责任。 请自觉于下载后24小时内删除。如果喜欢本游戏,请购买正版授权并合法使用。 本站内容侵犯了原著者的合法权益,可联系我们进行处理。