Android 后台服务 vs AlarmManager

5
有人能否简要介绍一下Android后台服务和Alarm Manager之间的区别,或者更详细的细节?
它们有什么不同?我应该在哪种情况下使用每个选项?
我正在开发一个需要定期从Web Service下载数据的应用程序。该应用程序有几个模块,每个模块具有不同的时间间隔以将数据下载/同步到Web Service。
比如说: + 模块A需要每15分钟同步 + 模块B需要每小时同步 + 模块C需要每天同步 + 模块D需要每周同步 + 模块E需要每月同步
哪种方法更好?为什么?
问候
3个回答

8

AlarmManager会安排意图。如果内存不足,您的服务可能会崩溃并被删除。但是使用AlarmManager,您可以在预定时间调用特定的服务。在您的情况下,AlarmManager比正在运行的服务更好。

希望对您有所帮助。


1
嗯,好的,明白了...那么我们在什么情况下使用后台服务呢? - stuckedoverflow
当您想在后台执行操作时,例如下载大文件时,应使用后台服务,以便客户端继续使用您的应用程序的其他功能。 - Cool Java guy מוחמד

0

0

通过AlarmManager的帮助,您可以安排意图。您的服务或BroadcastReceiver可以侦听这些预定的意图,并在指定时间执行任务。您不仅可以使用AlarmManager来实现程序逻辑。

您可以使用AlarmManager每15分钟分派一个带有A操作的Intent,每小时分派一个带有B操作的Intent等等。无论是将您的模块实现为独立服务还是根据意图操作来决定要做什么。

请注意,BroadcastReceiver中不应执行长时间操作。


那么扩展服务的活动与广播接收器相同吗?我在某个地方读到Android服务不被推荐,而是使用Alarm Manager。这是什么意思? - stuckedoverflow
不,它与BroadcastReceiver不同。对于你的问题,你可能可以忘记关于BroadcastReceiver的所有内容。使用Alarm Manager的建议意味着你不应该一直运行等待特定时间间隔的服务,而是使用AlarmManager在特定时间后分派一个意图,然后启动你的任务服务。这样设备的资源就不会被过多地使用。 - senola
嗯,好的,明白了...那么我们在什么情况下使用后台服务呢? - stuckedoverflow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接