如何保持Intent服务的运行

Dea*_*ely 9 service android commonsware

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

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

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

Com*_*are 15

我如何让它继续运行?

你没有.IntentService设计用于完成一项工作(或者如果命令碰巧快速进入队列,可能是一些工作),然后关闭.

我写的服务必须有事件和听取事情.

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

  • 有人可以限定这个答案吗?IntentService是Service的子类,那么为什么只有后者(在新线程中)才能用于长时间运行/正在进行的操作? (2认同)
  • 这仅仅是不正确的.你可以做内部IntentService任何事情,你有定期的服务做的.它所做的就是它提供消息队列的线程执行HandleIntent.你还可以把服务前台都是一样的. (2认同)
  • @SergeyA:“它所做的就是向执行HandleIntent的线程提供消息队列。” -并在工作完成后立即关闭。这就是计算机程序员将其用于事务性工作的原因。当然欢迎您使用`startForeground()`进行该交易。但是问题是关于“ LocationListener”。这本质上是异步的,因此不适合IntentService。 (2认同)