优化思路:

将定位逻辑写在Application中,并提供监听,需要时在其他Activity中调用结果。

解决问题:

1.将定位逻辑写在Activity可能存在定位多次初始化、多次请求定位等定位相关逻辑混乱的问题;

2.定位逻辑初始化时的定位设置耗时较多,写在Activity中会导致Activity启动过慢的问题。

基本配置:

具体实现:

源代码:

package com.example.xxx;

import android.app.Application;

import android.content.Context;

import com.amap.api.location.AMapLocation;

import com.amap.api.location.AMapLocationClient;

import com.amap.api.location.AMapLocationClientOption;

import com.amap.api.location.AMapLocationClientOption.AMapLocationMode;

import com.amap.api.location.AMapLocationListener;

public class App extends Application {

// 声明AMapLocationClient类对象

public static AMapLocationClient mLocationClient = null;

// 声明AMapLocationClientOption对象

public static AMapLocationClientOption mLocationOption = null;

public static AMapLocation mLoction = null;

public static Context mContext;

@Override

public void onCreate() {

super.onCreate();

mContext = this;

}

/**

*

* @ClassName: MyLocationListener

* @Description: 定位回调

* @author frank.fun@qq.com

* @date 2016年11月10日 下午2:05:45

*

*/

public interface MyLocationListener {

public void onLocationChanged(AMapLocation location);

}

/**

*

* @Title: getLocation

* @Description: 获取当前地址,不重新获取

* @param listener

*/

public static void getLocation(final MyLocationListener listener) {

if (mLoction != null) {

listener.onLocationChanged(mLoction);

return;

}

getCurrentLocation(listener);

}

/**

*

* @Title: getCurrentLocation

* @Description: 重新获取当前地址

* @param listener

*/

public static void getCurrentLocation(final MyLocationListener listener) {

// 初始化定位

mLocationClient = new AMapLocationClient(mContext);

// 设置定位回调监听

mLocationClient.setLocationListener(new AMapLocationListener() {

@Override

public void onLocationChanged(AMapLocation location) {

if (location != null) {

mLocationClient.stopLocation();

mLoction = location;

listener.onLocationChanged(location);

}

}

});

// 初始化AMapLocationClientOption对象

mLocationOption = new AMapLocationClientOption();

// 设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。

mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);

// 获取最近3s内精度最高的一次定位结果:

// 设置setOnceLocationLatest(boolean

// b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean

// b)接口也会被设置为true,反之不会,默认为false。

mLocationOption.setOnceLocationLatest(true);

// 给定位客户端对象设置定位参数

mLocationClient.setLocationOption(mLocationOption);

// 启动定位

mLocationClient.startLocation();

}

}

在Activity中调用:

App.getLocation(new MyLocationListener() {

@Override

public void onLocationChanged(AMapLocation location) {

location_tv.setText(location.getCity());

}

});

这样,与定位相关的其他需求如经纬度、详细地址等相关逻辑都可以通过此处一个App.getLocation(listener...)中调用获取。

android 高德地图定位缓慢,Android高德地图定位逻辑优化相关推荐

  1. android 定位工具类,高德地图定位工具类

    引言 定位功能初始化设置时耗时较多,如果放在Activity中操作,难免会有Activity切换较慢的问题.通过该工具类,可以实现一次初始化,多处随时调用.具有占用资源少,使用方便,便于复用,速度快, ...

  2. Android - 集成高德地图API(搜索,地图,定位)

    前言: 今天重构公司app的地图功能,刚好做个教程出来方便大家. 第一步: 注册高德开发用户,并来到控制台,点击应用管理->我的应用,然后创建新应用 地址:高德开放平台 | 高德地图API 点击 ...

  3. 高德地图android api定位失败,android 定位没有问题,iOS定位失败获取不到位置信息...

    @override void initState() { super.initState(); _type = widget.type; WidgetsBinding.instance.addPost ...

  4. js 调用android定位,基于html5+ 高德地图JS API使用安卓定位sdk用来进行定位

    使用Native.js打开Android的H5辅助定位 mui.plusReady(function() { if(plus.os.name == 'Android') { var AMapLocat ...

  5. Android 起调第三方导航,百度地图,高德地图,腾讯地图。起调高德地图导航

    主要工具类 /*** Created by meixi on 2018/6/29.* 使用第三方导航:高德.百度..........*/ public class AmapUtil {public s ...

  6. Android高德地图基本开发/在线高德离线地图开发/断网使用离线地图(Assets文件夹的使用)

    文章目录 高德SDK基本使用 前置操作 需求一:显示地图,并以当前所在位置为中心 权限申请 布局功能代码 活动功能代码 效果展示 需求二:离线地图(直接添加到应用端项目内) 需求三 :点击数据后以数据 ...

  7. Android接入高德地图SDK 一引入高德sdk

    SHA1的获取: 然后输入cd .android 回车 在输入:keytool -list -v -keystore debug.keystore 在回车,密钥默认 android 添加 jar 文件 ...

  8. android 高德卫星地图数据,白马地图 Bmap for Android v7.3.81 强大高德百度地图应用|张小北...

    Bmap for Android 是一款集成高德地图百度地图为一体的第三方地图应用APP,Bmap for Android 又叫白马地图,采用高德/百度地图数据引擎,可任意切换百度地图.高德地图数据源 ...

  9. android高德地图使用教程,Android 之 高德地图学习 一 基本地图

    自己做的笔记,没有深层的东西,请大神绕行~ 高德地图和百度地图相差不多,网上很多百度地图的视频教学,在这里锻炼下自己的学习能力,来弄下高德地图. 首先 进入 高德地图  官网,注册开发者  ,申请ke ...

最新文章

  1. 独家 | 用随机森林预测“美版拼多多”商品销量
  2. zw版【转发·台湾nvp系列Delphi例程】HALCON SmoothImage
  3. Windows命令:查看端口占用状况,杀掉进程
  4. 互联网或将进入泡沫2.0时代
  5. 每日一皮:听说学琵琶的都很文弱...
  6. ipconfig /flushdns 解释
  7. documentbodyscrollTop的值总为零的解决办法
  8. endnote怎么和word关联_endnote x9怎么和word关联?Word中用EndNote X9教程
  9. android+apk启动过程,Android Apk的运行过程(一)—— Activity启动与页面事件传递...
  10. 纺织品外观疵点及其成因分析大全
  11. android快速开发框架_【程序源代码】springboot和ssm的极速轻量快速开发框架
  12. excel查标准正态分布_Excel有关正态分布函数NORMSDIST做正态分布图
  13. R语言入门(1)时间序列分析
  14. 粉笔网页端资料分析仿ipad分屏插件开发完成总结
  15. 一款非常nice的国产U盘启动制作工具——Ventoy
  16. 详细教程!手把手教你制作个人微信红包封面
  17. c++小游戏:飞机游戏
  18. Jrebel+springboot2.0 启动失败问题
  19. 淘宝白底图有什么要求 淘宝白底图权重及注意事项
  20. Codeforces Round #618 (Div. 2)C、Anu Has a Function

热门文章

  1. 计算机图形学习课后习题解答--孔令得版
  2. 安卓开发个人小作品(1) - 有声计算器
  3. layui获取选中行数据
  4. 【码云学习02】Git基本命令
  5. imac 网络安装系统 服务器时间,Mac 重装系统教程(二):网络在线重装
  6. 触控面板 开发_长信科技研发内核不断升级 成触控显示一体化领军企业
  7. android:exported、enabled属性
  8. rtsp流媒体播放器----ffmpeg相关代码走读(一)
  9. sd/mmc驱动框架-(三)mmc子系统的数据结构
  10. hanlp自然语言处理包的基本使用--python