现状
由于各种App后台常驻,互相唤醒的泛滥,google越来越严格的限制了App在后台长时间活动。在高版本android中,几乎没有任何手段可以100%保证app后台长期存在。与其研究各种复杂而效果不见得好的灰色保活手段,在一些需求中不妨考虑前台保活。除了通知栏会有一个提示外,前台保活的稳定性非常高,并且是官方认可的手法。
前台保活
目前各大厂商android版本已经更新到android8.0也就是api26,在android8.0上创建前台服务需要使用startForegroundService()方法,然后必须在service中的oncreate()中调用startForeground()设置notification.否则5s后将会抛出 null Notification 或者 did not then callService.startForeground异常
1.首先创建一个服务
2.在服务中的oncreate()方法中创建notification(8.0中最好使用NotificationChannel()方法并且一定要设置notification的id),然后用startForeground()方法传入notification.
3.调用startForegroundService()启动服务
4.为了防止最近任务清理内存杀死应用,还可以在Mainifest中设置android:excludeFromRecents="true" 属性使应用不显示在最近任务列表中防止被用户清除.