【问题标题】:Android O background networkingAndroid O 后台联网
【发布时间】:2017-09-08 02:20:56
【问题描述】:

我正在阅读有关 Android 8 中后台服务限制的信息,从我阅读的内容来看,您似乎无法在后台运行您的服务很长时间。这似乎是合理的,但因为我使用后台服务来保持与服务器的连接 - 目前正在汇集新的东西,发送位置和响应我有点困惑。响应没问题,我只能在与应用程序交互时响应,但是池化新内容是有问题的,因为它需要从服务器获取内容,并且如果有新内容出现,则会向用户显示响应通知。

如果我理解正确,我可以使用 JobScheduler 每隔几秒安排一次作业。我基本上可以安排池。对于后台位置,存在这些限制,因此只有前台服务是在请求的时间获取更新的选项。

我将迁移到 websockets,然后池关闭,与服务器的连接将是持久的,应用程序将从服务器获取更新,我计划在后台服务中执行此操作,这样每次都会从服务器接收东西.但是,自 Android 8 以来我似乎不能。你将如何解决这个问题?我应该使用前台服务进行位置和服务器连接吗?或者有没有更好的方法在 android 8 上的 android 应用中进行后台联网?

谢谢

【问题讨论】:

    标签: java android networking background-process android-8.0-oreo


    【解决方案1】:

    以下是在 Android O 上执行后台工作的几个选项:

    • 使用 JobScheduler。您似乎已经很好地掌握了这一点——缺点是它是周期性的,而不是持久的。

    • 使用 GCM/FCM 或类似的推送服务将相关数据推送到您的应用,而不是一直保持与服务器的连接。

    • Use a foreground service。这将允许您继续执行您的后台工作,而您的应用程序不在前台,但会在状态栏中放置一条通知以通知您的用户您正在执行该工作。

    在您选择其中一种方法之前,您应该花点时间退后一步,查看您需要从服务器获取的数据,并确定为什么您需要持久连接以及是第一个还是第二个选项可能就足够了。

    如果您绝对需要与服务器建立持久连接,那么最后一个选项是您的最佳选择。 O 中更改背后的想法是仍然允许后台工作,例如您所描述的内容,但要让用户痛苦地清楚您的应用正在这样做。这样,如果他们认为您的数据不如您重要,他们可以采取行动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多