Android 新请求进入时终止旧服务的服务

Android Service that kills old Service when new request comes in

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

我需要它来将数据从 Web 加载到我的应用程序。我定期轮询通知 API 并尝试使用 AlarmManager 使用 inexactalarms 启动服务。我似乎无法摧毁它。我希望在启动新服务时销毁之前的服务实例。

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

A service 应该用于处理传入的意图、绑定到活动和执行后台工作。你永远不应该 杀死它。事实上,你应该关心它可能因为低内存事件等而被杀死的时间。

如果您认为 必须 终止它,那么您可能混淆了 "thread" 和 "service." 线程可能需要停止然后终止有一个新的产卵,但不是服务。

无论您目前在 Service 中执行什么逻辑 - 尝试将其放入您可以管理的线程中,即 "start" "stop" "destroy" (尽管不推荐使用这些特定方法)

然后使用 Service 根据其具有的意图和绑定来管理 thread class。换句话说,当它收到一个意图时,执行您需要的任何逻辑以终止您的线程,然后启动另一个。

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

编辑:

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