学徒浅析Android——Android 8.0(O)后台服务的限制和变化

Android 8.0对后台服务和隐式广播进行了更严格的限制,要求通过JobScheduler或前台服务创建后台服务,隐式广播需通过JobScheduler或显式注册。Google限制隐式广播以节省电量,建议开发者使用JobScheduler进行后台任务管理。JobScheduler在满足约束条件下执行任务,确保应用在主线程运行,符合Android O后台服务要求。
摘要由CSDN通过智能技术生成

      Android 最近几版的特色主要集中在省电和后台管理上,O的发布,对ServiceBroadcast又近一步加强了管束。主要可概括为如下两点:

      1、后台应用不被允许创建后台服务,必须通过JobScheduler或者Context.startForegroundService()进行创建

      2、特定的隐式广播不再被允许启动,必须通过JobScheduler调用或者显式注册的方式才能启动

      google之所以限制隐式广播,是因为广播的滥用导致设备在息屏等状态下,依然无法有效的做到省电,往往一个系统广播,会唤醒多个未启动的第三方应用。因此在O中,隐式广播的限制是很严厉的。谷歌给出了允许隐式注册的广播列表https://developer.android.com/preview/features/background-broadcasts.html为了方便懒得上墙的小伙伴们,贴出整理的广播列表:

开机广播,之所以被允许,因为每次设备启动只会发送一次
1、ACTION_LOCKED_BOOT_COMPLETED(直接启动模式下才会发出)
2、ACTION_BOOT_COMPLETED

以下三个广播有权限限制,一般应用无法接受。
3、ACTION_USER_INITIALIZE
4、android.intent.action.USER_ADDED
5、android.intent.action.USER_REMOVED

地区变更广播,这个地区指的是国家一级,一般不会发送
6、ACTION_LOCALE_CHANGED
7、
时区闹钟变更相关的广播,一般时间类APP需要
7、ACTION_TIMEZONE_CHANGED
8、ACTION_NEXT_ALARM_CLOCK_CHANGED
9、android.intent.action.TIME_SET

usb事件广播,需要设备触发usb事件才能发送
10、ACTION_USB_ACCESSORY_ATTACHED
11、ACTION_USB_ACCESSORY_DETACHED
12、ACTION_USB_DEVICE_ATTACHED
13、ACTION_USB_DEVICE_DETACHED

蓝牙事件广播,需要设备触发蓝牙事件才能发送
14、ACTION_CONNECTION_STATE_CHANGED
15、ACTION_ACL_CONNECTED
16、ACTION_ACL_DISCONNECTED

OEM相关的广播,一般是OEM通讯类应用会需要
17、ACTION_CARRIER_CONFIG_CHANGED
18、TelephoneyIntents.ACTION_*_SUB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值