7

IntentSerivce有时会在后台运行一个,在某些情况下它可能是一个相当长的运行过程。我为用户提供了退出应用程序的选项,该应用程序基本上只是停止并轮询并忽略任何GCM推送通知。但是,如果收到推送通知并且IntentService需要一段时间才能完成它必须做的事情(从服务器获取信息并在需要时向用户发送通知,例如收到新消息或其他东西)。

这是问题所在,如果用户在应用程序intentservice仍在运行时选择“退出”应用程序,他们仍然会收到我不想要的通知。我知道有stopSelf()该服务的方法,但是当我知道用户通过菜单按钮“退出”应用程序时,我需要在活动中停止它。向服务发送另一个intent不起作用,因为意图排队并且调用context.stopService(intent);我的活动也不起作用,所以我还能如何停止它?

4

2 回答 2

8

您是在传递新的IntentintostopService(Intent)还是在startService(Intent). 传递原始意图应该停止服务。

如果您无法使用 aHandler来传递服务 a MessageIntentService实现接口并在你的 中Handler.Callback创建一个新Handler(Handler.Callback)Activity,传递你的IntentServiceas 回调。然后onHandleMessage()在您的 IntentService 中实现调用stopSelf()Activity在您希望它停止时将消息传递给它。

于 2012-08-24T16:21:47.400 回答
3

下面的代码完全可以让我从 Activity 中停止 IntentService:

stopService(new Intent(getApplicationContext(), MyIntentService.class));
于 2015-04-21T08:08:17.397 回答