使用 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