[英]Stopping an IntentService from an activity
我有一个在后台运行的IntentSerivce
,在某些情况下它可能是一个很长的运行过程。 我为用户提供了一个退出应用程序的选项,该应用程序基本上只停止并轮询并忽略任何GCM
推送通知。 但是如果推送通知进来并且IntentService
需要一段时间才能完成它所拥有的功能(从服务器获取信息并在需要时向用户发送通知,如新消息到达或其他内容)。
这是问题,如果用户在intentservice
仍在运行时选择“退出”应用程序,他们仍将获得我不想要的通知。 我知道服务有stopSelf()
方法,但是当我知道用户通过菜单按钮“退出”应用程序时,我需要在活动中停止它。 向服务发送另一个intent
不起作用,因为意图排队并调用context.stopService(intent);
在我的活动中也不起作用,我怎么能阻止它?
您是将新的Intent
传递给stopService(Intent)
还是startService(Intent)
使用的原始startService(Intent)
。 传递原始Intent应该停止服务。
如果失败,您可以使用Handler
将服务传递给Message
。 让IntentService
实现Handler.Callback
接口并在Activity
创建一个新的Handler(Handler.Callback)
,将IntentService
作为回调传递。 然后在onHandleMessage()
实现onHandleMessage()
以调用stopSelf()
并让Activity
在您希望它停止时向其传递消息。
下面的代码非常适合我从Activity停止IntentService:
stopService(new Intent(getApplicationContext(), MyIntentService.class));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.