繁体   English   中英

从活动中停止IntentService

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM