在Android O中,我们有一些新的background limitations。例如,我们只能通过Context.registerReceiver
方法注册隐式广播。当系统杀死我们的进程时(例如由于内存不足),注册的接收器也将被销毁。TileService被视为前台进程
为了减少系统杀死我们进程的机会,我们必须告诉系统这个过程仍然处于前台。按照documentation一个应用程序被认为是在前台如有下列情况为真:
- 它有一个明显的活动,该活动是否已启动或暂停。
- 它有一个前台服务
- 另一个前台应用程序通过绑定到其中一个服务或通过使用其中一个内容提供程序连接到应用程序。例如,应用程序是在前台,如果另一个应用程序绑定到其:
- IME
- 壁纸服务
- 通知监听
- 语音或文本服务
如果这些条件都不是真的,则应用程序被认为是在后台。
那么在Android N中引入的TileService
(用于快速设置瓷砖)呢?当我们在mainfest文件中注册TileService
为ACTIVE_TILE
时,系统在每次可见图块时都不绑定服务(如此article中所述),因此我们的服务绑定到另一个应用程序,面对系统进程。
那么我的应用程序(只要将图块添加到快速设置窗格中)视为前景应用程序?这将是很好的,因为我不需要这种方法的持续通知,但用户可以在后台发送我的应用程序(通过删除瓦片)
很好的答案,谢谢你! – Cilenco