我想每15分钟启动一次服务。 大多数情况下,它会在30秒左右退出,但有时服务会持续15分钟以上。 如果先前的服务调用仍在运行,我认为对于警报管理器来说启动服务不是很好。 我正在考虑在onStartCommand中设置一个标志,以使其在服务运行时不执行任何操作而直接返回。 但是我不确定这是否是处理它的最佳方法,因为onStartCommand返回一个int,并且我不知道系统需要该值。 有没有最好的方法可以做到这一点?

===============>>#1 票数:1 已采纳

但是我从CommonsWare听到:“不,它不会创建新服务。如果该服务已经在运行,将再次使用onStartCommand()调用该服务以交付新的Intent,但不会创建第二个副本。”

是的,那个CommonsWare的家伙,他确实写了很多... :-)

如果先前的服务调用仍在运行,我认为对于警报管理器来说启动服务不是很好。

如果您使用的是IntentService ,这将不是问题。 来自第二个警报的命令将排队,等待onHandleIntent()从第一个警报结束。

如果您没有使用IntentService ,则需要在onStartCommand()中添加一些onStartCommand()来确定您自己的线程仍在徘徊,因此您想跳过该命令。

但是我不确定这是否是处理它的最佳方法,因为onStartCommand返回一个int,并且我不知道系统需要该值。

这实际上与您的问题无关。 只需返回super.onStartCommand() ,或您当前返回的任何onStartCommand()方法。

但是,如果我不想在下次调用该服务之前再次启动该怎么办?

好了,您可以用一次性警报代替重复警报(使用set() ),然后设置下一个警报,作为对上一个警报进行工作总结的一部分。

  ask by Cartesian Theater translate from so

未解决问题?本站智能推荐: