众所周知,后台不间断定位是非常反人类的事情,不仅侵犯用户隐私,还几乎不可能实现,这类需求最遭程序员痛恨。这不,最近公司就有傻逼领导三番五次要做这个需求,没办法,只好调研一下。最后,总算有所成果。

        当然,前提是,可以强制用户使用并要求用户打开相应的权限,否则免谈。所以也就免去了偷偷摸摸什么双进程保活的苦逼事儿,我们做的都是光(tian)明(bu)正(zhi)大(chi)的事。

        总共有5个要点:

        1、要求用户打开相应权限。包含:同意所有权限,包括始终允许定位权限、允许应用自启动、关闭智能省电模式、开启休眠时仍保持WIFI连接、给应用上锁。

        2、服务设置为前台服务。用startForeground启动通知。

        3、定时器AlarmManager

        4、电池锁WakeLock

        5、WIFI锁WifiLock

        第5点很多博客都没有提到,没有这个WifiLock,就没办法保证长时间锁屏还能保持wifi连接,结果就是日志在后台定时打印,但却没有定位数据。

        最后,经过一番折腾,终于在小米手机上成功实现了,虽然非常耗电(半天不开去了50%的电)。然而蛋疼的是,在华为手机上完全没效果。这需求就是个笑话,也证明了一点,对于严重侵害用户体验和隐私的需求,国内厂商对其做了各种限制,适配难度确实大。

        demo github地址:https://github.com/qugengting/ForegroundServiceExample

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐