android9.0系统下,讨论如何延长APP退到后台的保活/复活时间
一、7.0及以上不存在真正意义的保活。
二、盘点目前在9.0上,可能有效的“白色手段”保活手段(这里不讨论黑色和灰色手段)。
1.仿TIM引导用户打开“后台自启动”和加入“手机白名单”。
测试开始后台自启动,测试通知栏多久还能收到通知
华为M10 9.0
时长3到5小时没被杀死
VIVO x23 9.0(数字以分钟计算)
1 Y收到
2 Y
3 Y
6 Y
8 通知栏已无通知(app被系统杀死)
10 N收不到
抛出问题:使用H5界面引导用户打开后台自启动,用户如果会同意吗?
2.开启前台服务,会生成多余的通知,被产品否定
3.优化应用内存,正在进行中...
4.仿网易云音乐,复写锁屏界面。
5.集成华为/小米/oppo/vivo/魅族手机系统级推送。
6.集成“信鸽/个推/极光/友盟等”第三方推送,以期达到关联启动。
三、盘点已经失效或者不适合的保活黑科技,这里的“不适合”是因为我们做政府项目,后台是布在内网上的。
1.双进程守护方案,华为6.0就失效
2.监听锁屏/亮屏/解锁广播,打开1像素Activity,华为6.0就失效,因广播被取消了
3.故意在后台播放无声的音乐,华为M10手机9.0失效
4.使用JobScheduler唤醒Service,7.0以上失效
5.集成华为/小米/oppo/vivo/魅族等push,因为项目本地化部署,不适合
6.推送互相唤醒复活:极光、友盟、以及各大厂商的推送,因为项目本地化部署,不适合
7.同派系APP广播互相唤醒:比如今日头条系、阿里系,因为项目本地化部署,不适合
8.使用自定义锁屏界面:覆盖了系统锁屏界面。网易云音乐就是如此,但是会生成一个常驻通知栏的通知
9.把APP设置为系统应用,不适合,因为需要权限等
10.native进程(已报废)
11.利用账号同步机制拉活,失效了
12. 提高Service优先级,比如onStartCommand返回START_STICKY,没什么效果
四、总结
问:为什么需要保活
答:作为IM聊天软件,希望能即时收到好友消息。
问:为什么保活失败?
答:因为点击home键使app长时间停留在后台,内存不足被kill;
进入锁屏状态一段时间,省电机制会kill后台进程。