Android 接入高德地图SDK模块的优化点点滴滴

简介: 起因:由于在最近接手了一个关于导航的App,发现地图页面跳来跳去实在是卡顿地不行(运行在车载设备上的APP,机器性能实在是有限)。

起因:

由于在最近接手了一个关于导航的App,发现地图页面跳来跳去实在是卡顿地不行(运行在车载设备上的APP,机器性能实在是有限)。

初步判断:

应该是是关于地图等控件的反复创建和销毁,给内存GC带来了很大的压力。

简单调查:

通过 命令 adb shell dumpsys meminfo com.xxxx.xxx  (后面那个是包名,当然你可以使用MAT等工具来看) 

带有地图控件的页面之间跳来跳去,大量对象没有及时被回收,导致内存占用过高

解决方案:

利用Fragment来抽离各个有MapView的Activity中的业务逻辑,留下一个MapActivity就专门负责地图业务逻辑的效果展示;

这样多个带地图控件的Activity页面,就可以复用首页的地图控件即可,这样就可以复用地图控件这样的大对象了

上图,仅仅做了一个涉及到地图业务的优化(搜索页面),就少了10多M,效果还不错,目前在首页和搜索页面来回切换也都流畅许多了

探索高德地图:

有了上面的解决方案后,我就猜想高德地图可能也是这么干的,因为从首页到线路规划,再到导航,都是用了地图控件,那也是肯定是地图复用,才能减少大对象的创建和销毁

通过命令来:adb shell dumpsys activity | grep -i run    查看当前运行的activity,无论我在高德地图中怎么跳转,始终都是NewMapActivity,因此更加印证我的猜想

通过ui automator viewer 工具,看到了id为:fragment_container的全面覆盖页面的控件,id名称字面意思大家肯定都知道了,就是一个装fragment的容器

我也反编译了高德APK的代码,里面确实也是通过Fragment来实现多个页面的跳转和切换的

总结一下

在日常开发中,能复用的代码或者说是组件,能复用的就尽量复用,不要反复创建和销毁对象,那样真的很消耗系统资源;特别在后台开发中,高并发场景中更是如此,当然还要处理好多线程的问题,在移动端的开发中,多线程的问题还是比较好处理的。

目录
相关文章
|
7天前
|
Java 数据库 Android开发
【专栏】构建高效 Android 应用:探究 Kotlin 多线程优化策略
【4月更文挑战第27天】本文探讨了Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理。通过案例分析展示了网络请求、图像处理和数据库操作的优化实践。同时,文章指出并发编程的挑战,如性能评估、调试及兼容性问题,并强调了多线程优化对提升应用性能的重要性。开发者应持续学习和探索新的优化策略,以适应移动应用市场的竞争需求。
|
11天前
|
缓存 监控 Android开发
构建高效Android应用:从优化用户体验到提升性能表现
【4月更文挑战第23天】 在竞争激烈的移动市场中,一个高效的Android应用是吸引并保留用户的关键。本文将探讨如何通过一系列技术手段和最佳实践来优化Android应用的用户体验和性能表现。我们将深入分析响应式UI设计、内存管理、多线程处理以及最新的Android框架特性,揭示它们如何共同作用以减少应用延迟,提高响应速度,并最终提升整体用户满意度。
|
12天前
|
Android开发
Android MediaTek 平台增加UART接口的红外模块支持,支持NEC红外遥控
Android MediaTek 平台增加UART接口的红外模块支持,支持NEC红外遥控
12 0
|
13天前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
14天前
|
缓存 API Android开发
Android 应用优化策略:提升性能与用户体验
【4月更文挑战第21天】在移动应用开发领域,性能优化是一个持续的挑战。尤其对于Android平台,由于设备多样性和系统版本的碎片化,开发者需要采取多种策略确保应用流畅运行并给用户带来良好体验。本文将深入探讨针对Android应用的性能优化技巧,包括内存管理、UI渲染效率提升、多线程应用以及电池寿命优化等方面。这些建议旨在帮助开发者诊断和改进现有应用,或在开发新项目时提前考虑到性能因素。
|
14天前
|
API 数据库 Android开发
构建高效Android应用:探究Kotlin协程的优化实践
【4月更文挑战第20天】 在现代Android开发中,Kotlin协程以其轻量级线程管理和非阻塞I/O操作的优势成为提升应用性能和响应性的重要工具。本文深入分析Kotlin协程的核心原理,探讨其在Android平台上实现高效并发编程的方法,并通过具体实例演示如何利用协程改进应用架构。我们将从协程的基本概念出发,逐步解析其与线程、回调和异步任务的关系,最终展示如何通过协程简化代码结构,提高运行效率,并确保用户界面的流畅性。
21 11
|
5天前
|
缓存 监控 API
Android应用性能优化实践
【4月更文挑战第30天】 随着智能手机的普及,用户对移动应用的性能要求越来越高。对于Android开发者而言,提升应用的性能是吸引和保留用户的关键因素之一。本文将深入探讨影响Android应用性能的主要因素,并提供一系列的优化策略,旨在帮助开发者构建更加流畅和高效的应用体验。
|
5天前
|
移动开发 调度 Android开发
构建高效Android应用:Kotlin协程的实践与优化
【4月更文挑战第30天】在移动开发领域,性能和响应性是衡量应用质量的关键指标。对于Android平台而言,Kotlin协程作为一种新兴的异步编程解决方案,提供了更为简洁和高效的处理并发任务的能力。本文将深入探讨Kotlin协程的核心原理,以及如何通过它们来提升Android应用的性能。我们将从基础概念出发,逐步介绍协程的创建、管理以及与Android UI线程的交互,并最终展示如何优化现有代码以利用协程的优势。
|
5天前
|
移动开发 数据库 Android开发
构建高效Android应用:探究Kotlin协程的优化实践
【4月更文挑战第29天】在移动开发领域,尤其是Android平台上,性能优化一直是开发者关注的重点。近年来,Kotlin语言凭借其简洁性和功能性成为Android开发的热门选择。其中,Kotlin协程作为一种轻量级的并发处理机制,为编写异步代码、网络请求和数据库操作提供了极大的便利。本文将深入探讨Kotlin协程在Android应用中的性能优化技巧,帮助开发者构建更加高效的应用程序。
|
6天前
|
移动开发 API Android开发
Android应用性能优化实战
【4月更文挑战第28天】在移动开发领域,一个流畅的用户体验是至关重要的。对于Android开发者而言,应用的性能优化是一项既挑战性也极其重要的工作。本文将深入探讨Android应用性能优化的多个方面,包括内存管理、UI渲染、多线程处理以及电池效率等,旨在为开发者提供实用的性能提升策略和具体的实施步骤。通过分析常见的性能瓶颈,并结合最新的Android系统特性和工具,我们的目标是帮助读者打造更加高效、响应迅速的Android应用。