首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LocationManager.requestSingleUpdate

LocationManager.requestSingleUpdate
EN

Stack Overflow用户
提问于 2011-07-15 06:18:07
回答 1查看 6.5K关注 0票数 2

我在跟着Android Location Deep Dive tutorial走。在代码的一部分中,接收器是这样注册的。

代码语言:javascript
复制
IntentFilter locIntentFilter = new 
IntentFilter(SINGLE_LOCATION_UPDATE_ACTION);
context.registerReceiver(singleUpdateReceiver, locIntentFilter);

在代码的另一部分中,我们发现了以下内容;

代码语言:javascript
复制
singleUpatePI = PendingIntent.getBroadcast(context, 0, updateIntent, PendingIntent.FLAG_UPDATE_CURRENT);
locationManager.requestSingleUpdate(criteria, singleUpatePI);

这个想法是,当给定精度标准的位置可用时,LocationManager将触发SingleUpdatePI待定意图。我的接收器"singleUpdateReceiver“将被调用,因为我之前注册了它

它可以工作,但是我的SingleUpdateReceiver的onReceive方法被调用了两次(!)。这会导致问题,因为我在第一次取消注册时会很小心。在任何调用中都没有额外的可用的。

谁能解释一下为什么locationManager.requestSingleUpdate(..)会触发两次挂起的意图吗?这会导致一些问题,因为我在接收器中做的第一件事就是取消注册,如下所示

代码语言:javascript
复制
context.unregisterReceiver(singleUpdateReceiver);

在第二次调用时,接收方未注册,并抛出异常。

在Android 2.3.3 HTC Sensation上测试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-28 11:38:32

我相信这是因为下面这行……

代码语言:javascript
复制
criteria.setAccuracy(Criteria.ACCURACY_LOW);

应该是..。

代码语言:javascript
复制
criteria.setAccuracy(Criteria.ACCURACY_COARSE);

我没有注意到onReceive(...)方法在此更改后被调用了两次。希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6700610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档