9

我有两个 Intentservice 示例。一个是commonsware book 中的Download example。另一个位于http://www.vogella.com/articles/AndroidServices/article.html#servicecommunication_handler。这两个示例都显示了服务正在执行一个有限的任务,并且它们显然都通过运行到 onHandleIntent 事件范围的末尾来破坏自己。

我正在编写的服务必须有事件并监听事物。一种是监听 GPS 运动的 LocationListener。另一个将 Posts 发送到 REST 服务并监听回复。我希望它一直运行到经过一段时间或直到它被启动它的活动告知退出。

如何保持运行?例如,我应该将 LocationListener 的实现放在哪里?谢谢,加里

4

3 回答 3

16

如何保持运行?

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

我正在编写的服务必须有事件并监听事物。

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

于 2012-10-14T10:35:24.070 回答
-1

您可以通过以下两种方式之一实现此目的,

AlarmManager 是 android 的内置类,可让您在特定时间周期内执行特定操作。

TimerTask 与 AlarmManager 做同样的事情,您可以一次又一次地重复代码的某些操作。

然而,AlarmManager 在执行中更轻,所以我建议你使用 AlarmManager 类。

创建一个获取 GPS 坐标并定期将它们发布到服务器的 AlarmManager。

看看这个 AlarmManager Example

于 2012-10-14T00:27:46.917 回答
-1

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

这样,即使您退出活动,该服务也将运行。

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

祝你好运

于 2012-10-14T00:31:51.287 回答