如何保持Intent服务的运行

时间:2012-10-14 00:05:46

标签: android service commonsware

我有两个Intentservice的例子。一个是commonsware书中的下载示例。另一个是http://www.vogella.com/articles/AndroidServices/article.html#servicecommunication_handler。 这两个示例都显示了服务执行有限任务,并且它们显然都是通过运行到onHandleIntent事件范围的末尾来自我毁灭。

我写的服务必须有事件和倾听。一个是LocationListener,用于监听GPS移动。另一个使Posts到REST服务并监听回复。我希望它一直运行直到一段时间过去,或者直到被启动它的活动告诉它退出。

如何让它继续运行?例如,我在哪里放置LocationListener的实现? 谢谢,加里

3 个答案:

答案 0 :(得分:15)

  

如何让它继续运行?

你没有。 IntentService旨在完成一项工作(或者如果命令恰好快速进入队列,可能会有一些工作),然后关闭。

  

我写的服务必须有事件和倾听。

然后你不应该使用IntentService。使用常规Service,根据需要使用您自己的后台线程。

答案 1 :(得分:0)

要使服务保持运行,您的服务需要在服务方法START_STICKY中返回onStartCommand()

这样,即使退出活动,服务也会继续运行。

注意: 如果不是前台服务,Android仍会在一段时间(30分钟到1小时)之后终止服务。使用startForeground(notification)使其成为前景。

祝你好运

答案 2 :(得分:-1)

您可以通过两种方式实现这一目标,

AlarmManager是android的in-buite类,允许您在特定时间内执行某些操作。

TimerTask与AlarmManager完全相同,您可以反复重复代码的某些操作。

然而,AlarmManager更容易执行,所以我建议你使用AlarmManager类。

创建一个AlarmManager,用于获取GPS坐标并定期将其发布到服务器。

请看一下这个AlarmManager Example