使用Android GPS的盆友,想必对GetLastKnownLocation一定不陌生吧,这个空指针错误应该或多或少的会折磨折磨初来的人。网上有许多的解决办法,最多的就是那个从国外论坛上学来的方法。mgr.requestLocationUpdates("gps", 60000, 1, locationListener); 大概就是这个意思啦,大家可以网上搜一下,我就不重复了,或许是因为我太菜了,居然没成功,但是通过自己的思考,自己设计了一种处理这个空指针错误的方法,权是抛砖引玉,呵呵。

GPS的两个问题:1:GetLastKnownLocation返回null2:requestLocationUpdates出现FC。

解决办法:

  1. 对于第一个问题。maploc=mapSer.getLastKnownLocation(provider);如果maploc返回null,那么随后updateWithNewLocation(maploc);如果不对maploc进行处理肯定是会出错的,处理很简单:if(location==null)  return;也可以加上一句toast。
  2. 第二个问题是这样的。如果mapSer.requestLocationUpdates(provider,5000,5,locationListener);持续向provider监听,而provider无法返回位置的话。那么如果不加任何处理,长时间无法获取位置,就会出现FC问题。这个时间大概是30秒左右?怎么解决呢,我是采用java的计时器来解决的。通过计时器设定搜寻时间,控制搜寻时间小于会出现FC错误的时间。当搜寻时间超过设定后,触发计时任务,即取消监听。那么就不会触发FC啦。需要注意的是计时器需要运行在其他线程,用handler就可以啦,具体代码如下:
//第一次打开程序,需要重新定位。    if(first){toast(2);//计时器来控制定位时间,阈值为10秒。mytimer.schedule(new TimerTask(){public void run(){Message message = new Message();      message.what = 1;      handler.sendMessage(message);}},10*1000);  }

hundler代码如下:

final Handler handler = new Handler(){  public void handleMessage(Message msg) {  switch (msg.what) {      case 1:      toast(3);break;      }      super.handleMessage(msg);  }    };

toast代码如下:

 private void toast(int i){switch(i){case 1://或许无效Toast.makeText(this, "暂时无法更新位置,请稍候", Toast.LENGTH_SHORT).show();return;case 2://手机重启后或者第一次使用Toast.makeText(this, "正在定位,请稍候", Toast.LENGTH_SHORT).show();return;case 3://无法定位Toast.makeText(this, "无法定位,请稍候重试", Toast.LENGTH_SHORT).show();mapSer.removeUpdates(locationListener);return;}}

写的不是很清楚,如果需要源码的话可以联系我,有问题大家也可以一起讨论。O(∩_∩)O~

转载于:https://www.cnblogs.com/AntiLosT-T/archive/2011/08/02/2125479.html

也议GetLastKnownLocation!!(独家理解)相关推荐

  1. JAVA 开发规范标准(集合)

    JAVA 开发规范 一.编程规约 (一)命名规约 1. [强制] 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符 号结束. 反例:_name / __name / $Object / ...

  2. 布局元宇宙,探索新未来——WEB3.0·重庆站圆满落幕

    2023年3月25日,由CyberDao市场发展部主导的"WEB3.0·元宇宙峰会-重庆站"在重庆圆满落幕. 本次峰会以"布局元宇宙,探索新未来"为主题,围绕C ...

  3. 超40所大学公布暑假、秋季开学时间:最短20天,有的增设暑假小学期

    转载于 软科 近日,同学们最为关心的暑假时间.秋季学期开学时间又有了新消息,北京.四川.湖南.湖北.浙江.江苏等多地,又有一批高校陆续发布2020年暑期安排和秋季学期开学等有关事项通知.快来看这里有你 ...

  4. 环球企业家杂志:解密SAP进入电力市场幕后故事

    "其实我们卖的就是光盘.为什么大桥底下卖盗版盘的只要5块钱,而SAP的光盘就可以卖几个亿?"尹世明笑着问.作为SAP中国副总裁,这个个头不高,看上去颇是温和的人此刻显得有些调皮. ...

  5. 独家 | Transformer的可视化理解——深入本质探索其优良表现的原因(附链接)...

    作者:Ketan Doshi 翻译:欧阳锦校对:和中华本文约3800字,建议阅读10分钟本文通过可视化的方式清晰地展示了Transformer的工作本质,并从本质中探索了它具有优良表现的原因. 关键字 ...

  6. 独家 | 解析Tansformer模型—理解GPT-3, BERT和T5背后的模型(附链接)

    作者:Dale Markowitz 翻译:王可汗 校对:和中华 本文约3800字,建议阅读5分钟 本文为大家介绍自然语言处理中当下最流行的语言模型--Transformer模型. 标签:自然语言处理 ...

  7. 独家 | 混乱的句子表明AI仍然不能真正理解语言

    作者:Will Douglas Heaven 翻译:王可汗 校对:和中华 本文约1200字,建议阅读8分钟 最新的研究结果表示,自然语言处理尽管在GLUE上取得好成绩,但仍然无法达到真正理解自然语言. ...

  8. 独家 | 如何在BigQueryML中使用K-均值聚类来更好地理解和描述数据(附代码)

    原文:拉克什曼Lak Lakshmanan 翻译:陈之炎 校对:吴金笛 本文约2600字,建议阅读10+分钟. 本文教你如何在BigQueryML中使用K均值聚类对数据进行分组,进而更好地理解和描述. ...

  9. 独家 | 建立软件的经济学分析框架,浅议开源软件的经济学特性(附图解)

    人类社会正在加速数字化.一个显而易见的事实是,人们生活.工作的方方面面都离不开各种各样的软件.不久以前,人们还不知道什么是软件:从今往后,软件正在吞噬整个世界[https://a16z.com/201 ...

最新文章

  1. ubuntu12.04升级php5.4至。。5.5
  2. recyclerview 滑动到当前_Android recyclerview的滑动到指定的item
  3. Linux用户态协议栈好处,关于用户态协议栈的思考
  4. 微信小程序-学习笔记6-组件
  5. 前段react技术架构图_基于 React 的可视化编辑平台实践
  6. boost::multiprecision模块将 std::numeric_limits 用作 multiprecision.qbk 上的多精度文档片段的示例
  7. dbref java_java – Spring Data REST MongoDB:检索DBRef的对...
  8. 安卓学习笔记24:常用控件 - 循环器视图
  9. 微信发送模版消息,PHP代码简单案例
  10. ssh (安全外壳协议)
  11. 使用linux批量引物设计,【分享】超实用的引物设计操作,一看就学会
  12. nodejs菜鸟教程
  13. 《Erlang/OTP并发编程实战》第八章 分布式 Erlang/OTP 简介
  14. 第五次网页前端培训笔记(javascript基础内容)
  15. YOLOX训练代码分析3-损失函数
  16. 内存报错:Cannot allocate memory
  17. java模拟超市商品库存管理平台
  18. linux忘记密码修改密码_如何更改我的Linux密码
  19. 关于opencv中cvtcolor函数的code参数用CV_BGR2YUV与CV_BGR2YCrCb的了解
  20. Linux系统下的hadoop常用命令

热门文章

  1. Java中的门面设计模式,非常有用!
  2. 技术人, 请不要封闭自己
  3. 一篇文章带你详解 HTTP 协议之报文首部及字段详解(中)
  4. 操作系统:内存连续分配方式采用的几种算法及各自优劣
  5. 数据库的七种传播方式
  6. Android --- ImageView的scaleType属性讲解
  7. Java 的转义字符
  8. 浮点数例外 (核心已转储)_15000 字梳理 JVM 的核心知识
  9. hive通过外表把数据存到mysql中_hive数据去重
  10. 数据中心基础设施:建设与设计