我需要创建一个服务,与安卓应用一起运行,无论用户在应用的哪个屏幕上。 该应用是一个聊天应用程序,因此当设备离线时,服务应将所有正在离线发送的消息排队,并在设备连接时同步所有消息。
我已经编写了作业调度程序的代码,在设备在线时自动同步数据,但在应用程序处于活动状态时,我希望手动处理此问题。
我需要创建一个服务,与安卓应用一起运行,无论用户在应用的哪个屏幕上。 该应用是一个聊天应用程序,因此当设备离线时,服务应将所有正在离线发送的消息排队,并在设备连接时同步所有消息。
我已经编写了作业调度程序的代码,在设备在线时自动同步数据,但在应用程序处于活动状态时,我希望手动处理此问题。
操作系统仍然可以在低内存和可能的其他情况下终止服务。有两种方法可以克服这个问题:
如果您正在实现该服务,请覆盖onStartCommand()并返回START_STICKY作为结果。这将告诉系统,即使由于低内存而想要杀死您的服务,它也应该在内存恢复正常后立即重新创建它。
AlarmManager。一个系统服务,它会定期执行操作。这将确保如果您的服务被终止,甚至整个进程都会死亡(例如强制关闭),它将由AlarmManager 100%重启。
谢谢。
为此,您需要使用带有sticky的intent服务而不是服务,该服务将在队列中执行并完成您的工作。由于它是一个意图服务,因此当系统杀死服务进程后,它将自动启动。
https://developer.android.com/reference/android/app/job/JobScheduler.html
希望这个逻辑能够帮到您。