新服务进入时杀死旧服务的Android服务

时间:2015-01-16 20:55:54

标签: java android android-activity service intentservice

我需要为我的应用程序创建一个android服务,这需要在调用新的startservice方法时终止同一类的先前服务。

我需要这个来将数据从网络加载到我的应用程序。我经常轮询一个通知API,并尝试使用不接受警报的AlarmManager启动服务。我似乎无法摧毁它。我希望在启动新服务时销毁先前的服务实例。

我尝试使用stopSelf()stopService()结束服务,两者似乎都不起作用。

1 个答案:

答案 0 :(得分:2)

应该使用service来处理传入的意图,绑定到活动和执行后台工作。你永远不应该 来杀死它。实际上,你应该关注因内存不足等事件而被杀的时间等等。

如果您认为必须杀死它,那么您可能会感到困惑"线程"用"服务。"可能需要停止一个线程,然后使用新的一个产生,但不是服务来杀死。

无论您目前在Service中做什么逻辑 - 尝试将其置于可以管理的线程中,即" start" "停止" "破坏" (虽然这些特殊方法已被弃用)

然后使用Service根据它具有的意图和绑定来管理该thread类。换句话说,当它收到一个intent时,执行你需要的任何逻辑来杀死你的线程,然后再启动另一个。

如果您对本机线程不满意,也可以使用AsyncTask

编辑:

正如CommonsWare所指出的那样,Service应该提供价值。除非需要,否则不应该运行。