Android高德地图线优化,Android 接入高德地图SDK模块的优化点点滴滴
起因:
由于在最近接手了一个关于导航的App,发现地图页面跳来跳去实在是卡顿地不行(运行在车载设备上的APP,机器性能实在是有限)。
初步判断:
应该是是关于地图等控件的反复创建和销毁,给内存GC带来了很大的压力。
简单调查:
通过 命令 adb shell dumpsys meminfo com.xxxx.xxx (后面那个是包名,当然你可以使用MAT等工具来看)
带有地图控件的页面之间跳来跳去,大量对象没有及时被回收,导致内存占用过高
image.png
解决方案:
多个带地图控件的页面,复用首页的地图控件即可,这样就可以复用地图控件这样的大对象了
image.png
少了10多M,效果还不错,仅仅搜索页面中的地图复用了首页中的地图,在首页和搜索页面来回切换也都流畅许多了
探索高德地图:
有了上面的解决方案后,我就猜想高德地图可能也是这么干的,因为从首页到线路规划,再到导航,都是用了地图控件,那也是肯定是地图复用,才能减少大对象的创建和销毁
通过命令来:adb shell dumpsys activity | grep -i run 查看当前运行的activity,无论我在高德地图中怎么跳转,始终都是NewMapActivity,因此更加印证我的猜想
image.png
通过ui automator viewer 工具,看到了id为:fragment_container的全面覆盖页面的控件,id名称字面意思大家肯定都知道了,就是一个装fragment的容器
image.png
我也反编译了高德APK的代码,里面确实也是通过Fragment来实现多个页面的跳转和切换的
image.png
总结一下
在日常开发中,能复用的代码或者说是组件,能复用的就尽量复用,不要反复创建和销毁对象,那样真的很消耗系统资源;特别在后台开发中,高并发场景中更是如此,当然还要处理好多线程的问题,在移动端的开发中,多线程的问题还是比较好处理的。
补充下(2020.03.17)
建议在这种多个页面连续使用MapView的情景,使用一个主Activity(带MapView控件)+多个fragment来实现你的业务逻辑,fragment尽量复用主Activity的MapView。顺便说下,fragment开销很小,而且它也可以被复用,所以在有些场景下,建议多使用fragment,会感到页面切换如丝般顺滑
Android高德地图线优化,Android 接入高德地图SDK模块的优化点点滴滴相关推荐
- html插入地图的方法,JavaScript接入百度地图API的方法步骤
一.百度地图API接入 1.搜索百度地图开发平台 2.注册百度账号 3.登陆并申请成为开发者 4.在百度地图开发平台的首页选择控制台,在控制台中创建应用 创建好应用以后就能在控制台我的应用中看到这个应 ...
- Google官网,Google android的产品线(important)
> Google官网,google网站重回中国(2016.12) https://developers.google.cn/ ; https://firebase.google.cn/ ; ...
- Android开发知识(十)快速接入高德地图SDK(地图+定位+标记+路线规划+搜索)
文章目录 申请接入流程 显示高德地图 显示定位 Marker 显示地图标记 Route 路线规划 Search 搜索 申请接入流程 1.首先到 [ 高德地图API官网] 申请注册帐号 2.进入控制台, ...
- Android接入高德地图SDK,Android高德SDK 地图篇一:集成高德SDK
Android高德SDK 地图篇一:集成高德SDK 大家好,这是系列博文的第一篇: 系列博文会完成以下功能 一. 地图篇:利用高德SDK实现滴滴出行的效 二. 导航篇:利用高德SDK实现滴滴司机端的效 ...
- 【Android】接入高德地图SDK
第一步 申请开发者权限 进入高德地图开放平台https://console.amap.com/dev/index申请认证个人开发者 第二步 创建应用 第三步 下载Android地图SDK 进入http ...
- Android MVVM框架搭建(八)高德地图定位、天气查询、BottomSheetDialog
Android MVVM框架搭建(八)高德地图定位.天气查询.BottomSheetDialog 前言 正文 一.集成SDK 二.基础配置 ① 权限配置 ② 配置Key 三.显示地图 ① MapFra ...
- Android高德地图绘制区域,Android高德地图多边形的绘制与编辑
最近项目中用到了一个高德地图画地块的功能,差了一下api,发现只有js有相关的方法,所以仿照js的交互方式做了一个android版的多边形绘制与编辑. 先不说,上一张效果图 完成效果图 1.通过观察, ...
- android打包jar包给unity使用接入高德sdk,实现定位。
https://blog.csdn.net/unity_http/article/details/79929454 https://blog.csdn.net/why1happy/article/de ...
- Unity Android 接入高德定位SDK
Unity版本 2020 第一步首先去高德开放平台注册账号然后申请Key 高德开放平台 | 高德地图API 注册好账号之后 点击控制台 然后选择管理key 新建一个应用 选择添加 然后创建一个key ...
最新文章
- 并查集 ---- 扩展域并查集判二分图 + 循环模拟字典树 The 2020 ICPC Asia Macau Regional Contest C. Club Assignment (详解)
- python领域有什么用-Python都能应用到哪些领域?具体就业职位有什么?
- C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记11--接口/泛型
- C4.5-Release8中Ross Quinlan对缺失值的处理
- Notepad++远程连接Linux系统
- jvm(4)-虚拟机性能监控与故障处理工具
- 内核中dump_stack的实现原理(3) —— 内核函数printk的实现
- 数学竖式排版中不为人知的技巧
- Ioc--控制反转详解
- sap固定资产号码范围_SAP--FI详细解---固定资产
- 《锋利的jQuery》二、jQuery的选择器
- java deprecated 注释_@Deprecated注解的使用
- 介数中心度与紧密中心度_将开发团队与技术紧密结合的6种方法
- vue+Element表单验证+数字英文密码和手机号验证(详细)
- Tracup Talk:如何制作项目管理的甘特图?
- java word 题目导入_java使用poi导入word题库
- HX711测试【一个非常廉价且实用的模块】
- WPF中给文本框TextBox设置提示文字
- python可以爬取58同城代码_爬取58同城—字体反爬
- FFmpeg截图以及生成缩略图