我正在阅读Android 8中的后台服务限制,从我看来,似乎您无法在后台运行您的服务很长一段时间。这似乎是合理的,但因为我使用后台服务来保持与服务器的连接 - 目前汇集新的东西,发送位置和响应我有点困惑。答案是可以的,我只能在与应用程序交互时做出响应,但是汇集新内容是有问题的,因为它需要从服务器获取一些内容,如果有新内容出现,则用户会收到通知以响应它。
如果我理解正确,我可以使用JobScheduler每隔几秒安排一些工作。我基本上可以安排汇集。对于背景位置,有这些限制,因此只有前台服务是在请求的时间内获得更新的选项。
我将迁移到websockets,然后池关闭,与服务器的连接将是持久的,应用程序将从服务器获取更新,我计划在后台服务中执行此操作,因此每次都会从服务器接收内容。但是,从Android 8开始,我似乎无法解决这个问题。我应该使用前台服务进行位置和服务器连接吗?或者有没有更好的方法在Android 8上的Android应用程序中进行后台网络?
由于
答案 0 :(得分:1)
以下是在Android O上执行后台工作的几个选项:
使用JobScheduler。你似乎已经很好地掌握了这个 - 缺点是它是周期性的,而不是持久的。
使用GCM / FCM或类似的推送服务将数据推送到相关的应用程序,而不是始终保持与服务器的连接。
Use a foreground service。这样您就可以在不将应用放在前台的情况下继续执行后台工作,但会在状态栏中发出通知,通知您的用户您正在进行此项工作。
在选择其中一种方法之前,您应该花点时间退后一步,查看服务器所需的数据,并确定为什么需要持久连接,以及是第一个还是第二种选择可能就足够了。
如果您绝对需要与服务器建立持久连接,那么最后一个选项是您的最佳选择。 O的变化背后的想法仍然是允许后台工作,例如您所描述的内容,但是让用户明白您的应用程序正在这样做是非常明显的。这样,如果他们认为您的数据与您一样重要,他们就可以采取行动。