我需要为我的应用程序创建一个android服务,这需要在调用新的startservice
方法时终止同一类的先前服务。
我需要这个来将数据从网络加载到我的应用程序。我经常轮询一个通知API,并尝试使用不接受警报的AlarmManager启动服务。我似乎无法摧毁它。我希望在启动新服务时销毁先前的服务实例。
我尝试使用stopSelf()
和stopService()
结束服务,两者似乎都不起作用。
答案 0 :(得分:2)
应该使用service
来处理传入的意图,绑定到活动和执行后台工作。你永远不应该 来杀死它。实际上,你应该关注因内存不足等事件而被杀的时间等等。
如果您认为必须杀死它,那么您可能会感到困惑"线程"用"服务。"可能需要停止一个线程,然后使用新的一个产生,但不是服务来杀死。
无论您目前在Service
中做什么逻辑 - 尝试将其置于可以管理的线程中,即" start" "停止" "破坏" (虽然这些特殊方法已被弃用)
然后使用Service
根据它具有的意图和绑定来管理该thread
类。换句话说,当它收到一个intent时,执行你需要的任何逻辑来杀死你的线程,然后再启动另一个。
如果您对本机线程不满意,也可以使用AsyncTask
。
编辑:
正如CommonsWare所指出的那样,Service
应该提供价值。除非需要,否则不应该运行。