轨迹导航性能优化

作者: mobile墨白 | 来源:发表于2019-06-19 15:06 被阅读0次

    解决步骤:

    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版本并没有白名单。

    相关文章

      网友评论

        本文标题:轨迹导航性能优化

        本文链接:https://www.haomeiwen.com/subject/rofrxctx.html