我对任何操作系统中的服务的了解是,它们通常在后台运行并执行他们必须做的任何工作。
但是我第一次熟悉Android服务时,我感到很困惑。
它似乎只在应用程序运行时运行,而对我来说,它们不再是复杂的线程。
我真的错了吗? 如何创建在应用程序不运行时运行的服务?(这样我可以检查更新并为用户创建通知,然后如果用户选择打开它们将引导他进入应用程序)。 推送通知与它有什么关系吗?修改
谢谢你们到目前为止的答案。 我的问题似乎是服务只在设备启动时正式启动。我在应用程序启动时调用startService,但这似乎没有帮助。应用程序关闭时服务仍然死亡(除非它已启动) 我也从不打电话给stopService
答案 0 :(得分:2)
如果您尝试实现在(后台)服务中执行的长时间运行的任务,则必须在服务中启动一个或多个线程。因此,该服务只是让您有机会拥有应用程序上下文而无需具有用户界面;)您可以将其视为一种容器。
This page为您提供有关Android中不同线程方法的精彩概述。正如您所看到的,服务没有自己的主题。
无论如何,在你的情况下,似乎AlarmManager
可能是更好的选择。始终为轮询信息运行服务可能会占用大量CPU和电池(例如,请参阅this post)。因此,尽量避免让线程一直运行。
如果您可以从服务器推送有关更新的信息,那就没关系了。在这种情况下,请查看Googles Cloud Messaging。
答案 1 :(得分:0)
Michael 在关于startService的评论中是对的()
所以它是这样的: