如何停止服务?

时间:2011-10-10 05:12:24

标签: android

我有一个服务[IntentService],它运行一个'计时器任务',计划在每5分钟后运行一次。我在安装应用程序时启动服务。

现在我想停止我的服务[服务运行'计时器任务'],但是当我使用stopService()方法时,我无法停止我的服务。我试图在我的服务的onDestroy()方法中添加一个日志,但是stopService()没有到达那里。

此外,由于stopService()返回boolean i记录了它的输出,它返回false。

我该如何阻止它?

1 个答案:

答案 0 :(得分:0)

  

我有一个服务[IntentService],它运行一个'计时器任务',计划在每5分钟后运行一次。

请不要这样做。用户讨厌执行此操作的开发人员,并将使用任务杀手或“设置”应用程序强制停止您的应用程序。请使用AlarmManager,这样您就可以占用更少的内存,并且对用户更友好。

  

我在安装应用程序时启动服务。

不支持此功能。特别是,从Android 3.1开始,这是不可能的,即使是你可能正在使用的无证件黑客也是如此。

  

现在我想停止我的服务[服务运行'计时器任务'],但是当我使用stopService()方法时,我无法停止服务。

最有可能的是,您的服务已停止。 IntentService一返回onHandleIntent()就会停止。 TimerTask分叉线程来维护其计时器 - 如果你在TimerTask中创建了这个onHandleIntent(),那么你就是在泄漏这个线程。你无法阻止这个线程。一旦Android选择终止您的流程,它将随机消失。

另一方面,如果您摆脱TimerTask并使用AlarmManager,则可以使用IntentService onHandleIntent()方法进行实际定期工作