我这几天跟这个安卓后台服务玩命搏斗,真是体会到了什么叫“如此剧烈的疼痛”。我发誓,以后接活,只要是深度定制安卓系统的,我直接加价三倍。不为什么,就为了这份心肌梗塞一样的痛苦。
我跟安卓的第一次交手
这事儿说起来简单,客户要一个后台定位的服务,要求是无论用户怎么操作,锁屏也切出去也都得稳稳地给我把数据传回来。我一拍胸脯,小意思,不就是一个`Service`吗?顶多加个`BroadcastReceiver`配合着唤醒。文档翻了一遍,代码我敲起来比喝水还快,半小时就跑通了最基础的流程。
结果?我测试了一晚上,发现只要屏幕一锁,那货最多撑三分钟,直接就给我崩了。我看日志,干干净净,啥报错都没有。App直接就是被系统砍了头。我当时就在想,你一个安卓系统,有必要对后台进程这么狠吗?
硬着头皮往下挖
-
小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
第一天:我把代码从头到尾捋了一遍,把所有能想到的权限都加上了,什么忽略电池优化,什么后台高耗电提示,全部搞定。结果卵用没有,还是老样子。我开始怀疑是不是我的设备有问题,换了一台,问题依旧。
- 第二天:我气得差点砸了电脑。没办法,我只能钻进安卓的源码里找答案。我翻来覆去地看那些关于低功耗模式(Doze Mode)的说明。那代码量,简直是噩梦,看着就让人头疼。我找找,终于发现了端倪,这根本不是我的问题,是定制系统为了省电,把后台进程的优先级给压得太低了。
- 第三天:我决定用一个“脏”办法。我注册了一个前台服务(`Foreground Service`),它必须在通知栏里显示一个图标。但我又不想让用户看到,那多蠢。我捣鼓出来一个绝招:把通知图标设置成透明的,再把通知优先级设置到最低。这样,系统认为它是个高优先级服务,但用户啥也看不到。服务一跑起来,立马就稳了。
那三天,我头疼得像要裂开,这就是“如此剧烈的疼痛”。
我为啥要接这种破烂活?
这事儿说到底,要怪我的前东家。为啥我能有空去折腾这种偏门的定制安卓问题?
去年年中,我们公司突然说业务转型,要把好好的桌面端项目全线搬到Web上。我当时的项目经理,一个二十出头的小年轻,拍着桌子让我一个做了十几年原生桌面端的老手去学前端三件套。我当时心里就骂开了,老子一把年纪,你让我去整那种三天一小变、五天一大变的玩意儿?我直接跟那小子拍了桌子,说老子不伺候了,当天就把工作撂了。
老婆当时刚生完二胎,在家没收入,房贷压力大得喘不过气。我一赌气辞职,立马就慌了。存款哗地往下掉,没过两个月就见底了。为了能让我老婆孩子有口饭吃,我把面子啥的全扔了,接了一个朋友介绍的超级低价外包活——就是给他们村里那个智慧养老平板做应用。那个平板用的就是深度定制、对后台极其不友好的安卓系统。
我才不得不一头扎进这个“如此剧烈的疼痛”里。那段日子,真是黎明前的黑暗。搞定这个服务后,整个项目顺利交付,拿到了钱,总算是缓过来了。我现在自己接零活,带着几个小兄弟远程干,收入比以前翻了一倍多。前东家?听说他们那Web项目烂尾了,我以前那个领导上个月还打电话来,说“回来,项目组离不开你”,我直接按了拒绝键,把他的号拉黑了。他现在还在网上挂着那个项目经理的职位,估计是永远也招不到像我这么能扛的苦力了。

