轨迹导航性能优化

解决步骤:

1、去掉maputil,不需要展示
2、去除百度地图的定位,改用导航自带定位回调
3、优化权限申请


分析工具:Android Studio自带profiler工具

主要参数:(出处)

  • Native:从 C 或 C++ 代码分配的对象内存。
    即使您的应用中不使用 C++,您也可能会看到此处使用的一些原生内存,因为 Android 框架使用原生内存代表您处理各种任务,如处理图像资源和其他图形时,即您编写的代码采用 Java 或 Kotlin 语言。

  • Graphics:图形缓冲区队列向屏幕显示像素(包括 GL 表面、GL 纹理等等)所使用的内存。 (请注意,这是与 CPU 共享的内存,不是 GPU 专用内存。)

分析过程:

这里我们主要观察cpu变化和内存变化,内存变化指标主要观察graphics(图形绘制内存指标,以下简称gp)和native数据变化

注意:我们这里只看变化值

step1:去掉mapView:

去掉maputil和mapView之前,进入activity,gp暴涨了27.4m,native也涨了19.6m,分析了下cpu加载方法耗时发现代码内结合maputil加载了一个mapView,且每秒n次在不断刷新,导致onCreat方法加载耗时接近1000ms


进入前

进入后

优化后,gp上涨了13.4m,native涨了11.9m:


进入前
进入后

step2:去除百度地图的定位,改用导航自带定位回调:

代码里有涉及到定时获取定位去获取接口数据,我们直接把接口放到导航自带的定位回调即可,此处忽略性能优化前后对比,少一个定时定位模块效果显而易见。

step3:优化权限申请:

我们发现两个弹窗从显示到消失过程native几乎没有变化,gp却从62.6m暴降到28.7m再到16.7m,整整降了45.9m,在此过程中,不仅有弹窗显示,也有权限申请等过程,代码包含for循环等逻辑。

第一个弹窗显示
第一个弹窗消失,第二个弹窗显示
第二个弹窗消失

我们自己尝试写了一个同样的dialog展示,发现gp在dialog消失后下降了10m左右,这个比较符合第二个弹窗消失的消耗,那么第一个弹窗消失的过程除去10m消耗,还剩余24m左右未知消耗。

我们考虑到在Android9.0以后对app耗电限制的问题,在这里我们先申请权限,每次进入之前先检查白名单,确认已经拿到权限后再进入轨迹导航。

todo:不过目前在华为荣耀的Android9.0机型有点问题,该机型的9.0版本并没有白名单。

你可能感兴趣的:(轨迹导航性能优化)