创建长期服务

时间:2017-06-20 11:19:23

标签: android service broadcastreceiver android-broadcast intentservice

我需要创建一个与Android应用程序一起运行的服务,无论用户在哪个应用程序屏幕上运行。 该应用程序是一个聊天应用程序,因此当设备离线时,服务应排队脱机发送的所有邮件,当设备连接时,它应同步所有邮件。

我已经为作业调度程序编写了代码,以便在设备联机时自动同步数据,但是当应用程序处于活动状态时,我想手动处理。

3 个答案:

答案 0 :(得分:1)

您必须使用粘性而非服务的intent服务,这将在队列中执行并完成您的工作。由于它是一个意向服务,它将在系统终止服务过程后的某个时间自动启动。

答案 1 :(得分:1)

您可以通过以下简单步骤完成此操作:

  1. 创建简单服务,首次启动应用程序后,只需启动闪屏。
  2. 在获取一个数据后在服务中,您可以调用另一个请求。
  3. 之后,您可以在全局范围内创建一个广播操作,该操作将始终调用每个网络。
  4. 在后台,您可以再次同步数据并将其保存到共享偏好设置或根据您的要求。
  5. 您也可以使用AlarManager。
  6. 您可以使用JobSheduler在此处创建服务,您也可以分配工作和时间。

    参考链接:

    https://developer.android.com/reference/android/app/job/JobScheduler.html

    希望这种逻辑可以帮助你。

答案 2 :(得分:1)

创建长期服务。

操作系统仍然可以在低内存和其他情况下终止服务。有两种方法可以解决这个问题:

  1. 如果要实现该服务,请覆盖onStartCommand()并返回START_STICKY作为结果。它会告诉系统即使它因内存不足而想要终止你的服务,只要内存恢复正常就应该重新创建它。

  2. AlarmManager。系统服务,定期执行操作。这将确保如果您的服务将被终止,或者甚至整个过程将终止(例如强制关闭) - 它将由AlarmManager 100%重新启动。

  3. 谢谢。