从活动停止的IntentService(Stopping an IntentService from

2019-09-21 15:12发布

我有一个IntentSerivce在后台运行,有时它可以是相当在某些情况下长时间运行的过程。 我给用户退出基本上只是停止和轮询和忽略任何应用程序中的选项GCM推送通知。 但是,如果一个推送通知进来, IntentService需要花费一些时间才能完成做什么,它必须(从服务器获取信息,并且如果需要的话,像一个新的消息到达或东西发送通知给用户)。

这里的问题是,如果用户选择“退出”的应用程序,而intentservice仍在运行,他们仍然会得到它,我不希望通知。 我知道,还有就是stopSelf()为服务方法,但我需要停止它的活动时,我知道用户“退出”通过菜单按钮的应用程序。 发送另一个intent到服务无法正常工作,因为意图得到排队,并调用context.stopService(intent); 在我的活动无法正常工作或我怎么那么什么可以阻止它?

Answer 1:

你传递一个新的Intent进入stopService(Intent)或原单中使用startService(Intent) 。 路过的原意应该停止该服务。

如果做不到这一点,你可以使用一个Handler传递服务Message 。 有IntentService实现Handler.Callback接口,并创建一个新的Handler(Handler.Callback)在你的Activity ,通过你的IntentService回调。 然后实现onHandleMessage()在你的IntentService调用stopSelf()让您的Activity时,你想让它停止传递消息给它。



Answer 2:

下面的代码是完全工作正常,我从活动停止IntentService:

stopService(new Intent(getApplicationContext(), MyIntentService.class));


文章来源: Stopping an IntentService from an activity