Android8.0行为改变
除了新性能,Android 8.0(API 26)引入了一系列系统API改变了一些行为。本文介绍了一些关键改变。
大多数改变影响所有应用,不管他的目标API。然而,有些改变只影响目标Android 8.0的应用。清晰起见,本文分成两部分:对所有应用的改变和目标API为Android 8.0的应用的改变。
对所有应用的改变
因为Android 8.0(API26)引入了电池性能提高的功能,当应用进入缓冲状态并没有活动的组建时,系统释放应用持有的任何wakelock。
除此之外,为提高性能,系统对一些不在前台运行的应用有些限制。具体来说:
- 不在前台运行的应用在调用后台服务是有些限制。
- 应用不再能够在Manifest里注册大部分隐式广播(即没有明确指定发给哪个app的广播)。
默认情况这些限制只应用在目标API是O的应用,但是用户可以在设置里把目标应用不是O的应用也打开限制。
Android 8.0还对一些方法作了改变:
- 对于目标API设置为O的应用,如果调用startService(),但是目标服务不支持创建后台服务,调用将会抛出IllegalStateException。
- 新的Context.startForegroundService()方法启动一个前台服务。即时应用在后台,也可以调用Context.startForegroundService()。但是应用必须在服务启动5秒钟之内调用startForeground()方法。
未完