美文网首页
利用系统设置,实现后台保活

利用系统设置,实现后台保活

作者: lu_xiukun | 来源:发表于2019-11-06 13:35 被阅读0次

    随着android系统和手机厂商的不断完善,后台保活越来越难搞;但总有办法利用一些小技巧可以实现后台保活。

    相信你也看了不少关于保活的文章,各种技术五花八门,我这种小菜鸟只能仰望;还有热心大佬把各种技术总结到一块https://github.com/xingda920813/HelloDaemon

    公司项目是做VOIP的,每隔50s需要向SIP服务器发送register信息,用户反映熄屏几分钟就接不到电话了,sip服务器已经是unregister状态了,说明熄屏后应用没有在发送register信息。

    好了,开始研究。。。

    不知道大家有没有用过跑步类应用,这里以keep举例,我在用keep跑步时,听着歌,熄屏后手机装口袋里,本来跑5km,跑到3km时应用被杀死了,后面两公里没有计算上,那我TM还怎么发朋友圈装B?好在Keep有解决方案,引导用户去运动权限设置里开启后台保护设置和防睡眠设置,点击后台保护设置跳转到了应用自启管理

    找到办法了,咱们就试一试。。。

    通过 adb shell dumpsys activity activities命令,查到自启界面是:com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity(华为荣耀v9);

    手动管理 打开 允许后台运行

    搞定,测试。。。 home键去后台,锁屏。。。

    5分钟。。。没问题

    10分钟。。。还在运行

    30分钟。。。仍旧在运行

    but,电话还是收不到,这又是为什么呢?

    怀疑是熄屏后网络断开,锁屏后保持网络连接 也开着呢,因为连得是wifi,就用了wifilock测试下,wifiLock可以在熄屏后持有wifiLock的应用依旧保持网络连接,发现没用。。

    到底是不是断网的原因呢? 用TCP测试一下吧,百度TCP,ctrl c +v ,搞定。。至于服务端,使用网络调试助手作为TcpServer,每个5s发送一次

    2019-10-29 12:39:47.755]# RECV ASCII FROM >

    发送心跳包:3685s

    [2019-10-29 12:50:22.226]# RECV ASCII FROM >

    发送心跳包:3685s

    [2019-10-29 12:51:09.039]# RECV ASCII FROM >

    发送心跳包:3690s

    [2019-10-29 13:03:47.860]# RECV ASCII FROM >

    发送心跳包:3690s

    发现熄屏后确实是断了,应该是休眠了,10分钟才发一次这是什么鬼

    休眠了,那怎么搞?那就不让他休眠 wakeLock

    Intent.ACTION_SCREEN_OFF

    Intent.ACTION_SCREEN_ON

    这俩个广播大家都熟悉,熄屏,亮屏,熄屏是持有wakeLock,亮屏时release,有点太暴力了。。

    没办法,为了解决问题,就这么滴吧

    测试。。。又出问题了,红米Note8,能收到来电,但是弹不出接听电话的界面。。。

    原来小米有自己独有的权限,允许后台弹出界面的权限,不光小米有,vivo、魅族好像都有,华为暂时没发现。。这个只能应用启动时弹出dialog去引导用户去设置了

    好了,到这里就结束了,总结一下就两点

    1、引导用户开启允许后台运行

    2、锁屏时持有wakeLock,亮屏时释放

    如果有后台弹出界面的需求,还需开启相应的权限,判断有没有这个权限的办法,目前只有小米测试的可以,其他手机的没找到;

    还有一点就是容易高耗电提醒,不过微信使用中,也会时常有高耗电的提醒,也不用太在意,在意的话就把高耗电提醒关掉。

    相关文章

      网友评论

          本文标题:利用系统设置,实现后台保活

          本文链接:https://www.haomeiwen.com/subject/rantbttx.html