在 Android O 中,我们有一些新的后台限制。比如说,我们只能通过 Context.registerReceiver
方法注册隐式广播接收器。当系统杀死我们的进程(例如因为内存不足)时,已注册的接收器也将被销毁。
为了减少系统杀死我们的进程的机会,我们必须告诉系统这个进程仍然处于前台。根据文档,如果以下任何一项为真,则认为应用程序处于前台:
如果上述条件都不成立,该应用程序将被视为在后台运行。
- 它有一个可见的活动,无论该活动是启动还是暂停状态。
- 它有一个前台服务
- 另一个前台应用程序连接到该应用程序,即通过绑定到其服务之一或使用其内容提供程序之一。例如,如果另一个应用程序绑定到其:
- IME
- 壁纸服务
- 通知监听器
- 语音或文本服务
那么,在Android N中引入的快速设置瓷砖
TileService
呢?当我们在清单文件中将TileService
注册为ACTIVE_TILE
时,系统不会每次瓷砖变得可见时都绑定服务(如文章所述),因此我们的服务会绑定到另一个应用程序,实际上是系统进程。那么,只要瓷砖添加到快速设置窗格中,我的应用程序是否被视为前台应用程序?这很好,因为我不需要使用持久通知,并且用户仍然可以将我的应用程序发送到后台(通过删除瓷砖)。
TileService
相比前台服务有什么优势? - IgorGanapolsky