Android 从活动停止IntentService
我有一个Android 从活动停止IntentService,android,intentservice,Android,Intentservice,我有一个intentservice,有时在后台运行,在某些情况下,它可能是一个相当长的运行过程。我为用户提供了一个退出应用程序的选项,它基本上只是停止和轮询,并忽略任何GCMpush通知。但是,如果传入推送通知,并且IntentService需要一段时间才能完成它必须完成的工作(从服务器获取信息,并在需要时向用户发送通知,如收到新消息或其他信息) 问题是,如果用户在intentservice仍在运行时选择“退出”应用程序,他们仍会收到我不想要的通知。我知道服务有stopSelf()方法,但当我知
intentservice
,有时在后台运行,在某些情况下,它可能是一个相当长的运行过程。我为用户提供了一个退出应用程序的选项,它基本上只是停止和轮询,并忽略任何GCM
push通知。但是,如果传入推送通知,并且IntentService
需要一段时间才能完成它必须完成的工作(从服务器获取信息,并在需要时向用户发送通知,如收到新消息或其他信息)
问题是,如果用户在
intentservice
仍在运行时选择“退出”应用程序,他们仍会收到我不想要的通知。我知道服务有stopSelf()
方法,但当我知道用户通过菜单按钮“退出”应用程序时,我需要在活动中停止它。向服务发送另一个intent
不起作用,因为intent排队并调用context.stopService(intent)代码>在我的活动中也不起作用,因此我如何才能停止它?您是将新的意图
传递到停止服务(意图)
中,还是传递在开始服务(意图)
中使用的原始意图。通过原始意图应停止服务
如果失败,您可以使用处理程序
向服务传递消息
。让IntentService
实现Handler.Callback
接口,并在活动中创建一个新的Handler(Handler.Callback)
,将IntentService
作为回调传递。然后在您的IntentService中实现onHandleMessage()
,调用stopSelf()
,并让您的活动在需要停止时向其传递消息 下面的代码对于我停止IntentService的活动非常有效:
stopService(new Intent(getApplicationContext(), MyIntentService.class));
在从通知开始的活动中,您从服务实例(我指的是Handler.Callback实例)中得到了什么?可能重复