使用 IntentService 进行位置监听,但在 onHandleIntent 之后立即调用 onDestroy

Posted

技术标签:

【中文标题】使用 IntentService 进行位置监听,但在 onHandleIntent 之后立即调用 onDestroy【英文标题】:Using IntentService for Location listening but onDestroy called immediately after onHandleIntent 【发布时间】:2011-08-20 16:45:28 【问题描述】:

我正在使用 IntentService 来监听 GPS 位置更新,因此它会在用户离开活动时运行。 IS 在消息中将 Location 发送给 Activity 的处理程序。

问题是,当用户点击“停止跟踪”按钮时,状态栏通知说“正在跟踪...”仍然存在,因为它是在 IntentService 中创建的。因此我重写了 onDestory() 所以我可以调用:

mNotificationManager.cancel(TRACKING);

但问题是当我实现onDestroy()时,它是在onHandleIntent之后立即调用的。如果我删除我的覆盖 onDestroy() 代码,那么它不会立即被调用并且运行良好,将位置发送回活动以显示在屏幕上。

任何想法为什么 onDestroy() 如果我实现它会立即被调用,但如果我不实现它就不会?

我在这里很困惑。

谢谢大家,

无限化

【问题讨论】:

【参考方案1】:

好的,我现在已经整理好了,我不应该使用 IntentService,而是使用了 Service,并将所有功能放入 onStartCommand() 中,现在一切正常。

对不起大家浪费你的时间:-/

无限化

【讨论】:

这里没有浪费,也许有人犯了同样的错误,并在你的答案中找到了解决方案。

以上是关于使用 IntentService 进行位置监听,但在 onHandleIntent 之后立即调用 onDestroy的主要内容,如果未能解决你的问题,请参考以下文章

Android - 未在 IntentService 中接收位置对象 - 使用 LocationServices FusedLocationApi requestLocationUpdates 使用未

向 requestLocationUpdates intentService 发送额外信息会中断位置更新

未从 IntentService 调用 onLocationChanged

在Android O中运行后台运行Intentservice

位置侦听器从服务而不是 IntentService 工作

IntentService:如何正确入队?