写点什么

Android 性能优化之启动速度优化,Android 面试资料集合

用户头像
Android架构
关注
发布于: 刚刚

//...


<activity


android:name=".MainActivity"


android:label="@string/app_name"


android:theme="@style/AppTheme.Launcher">


<intent-filter>


<action android:name="android.intent.action.MAIN" />


<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>


</activity>


2、然后在 MainActivity 中加载布局前把 AppTheme 重新设置给 MainActivity:


@Override


protected void onCreate(Bundle savedInstanceState) {


setTheme(R.style.AppTheme);


super.onCreate(savedInstanceState);


setContentView(R.layout.activity_main);


}


这样在启动时会先显示 background,然后待界面绘制完成再显示主界面:



3.2Glide 及其他图片框架


Glide 是一个很好用的图片加载框架,除了常用的图片加载、缓存功能以外,Glide 支持对网络层进行定制,比如换成 OkHttp 来支持 HTTP 2.0。不过,如果在追求启动速度的情况下,在 Splash 页或主界面加载某一张图片时,往往是第一次使用 Glide,由于 Glide 没有初始化,会导致这次图片加载的时间比较长(不管本地还是网络),特别是在其他操作也在同时抢占 CPU 资源的时候,慢的特别明显!而后面再使用 Glide 加载图片时,还是比较快的


Glide 初始化耗时分析:Glide 的初始化会加载所有配置的 Module,然后初始化 RequestManager(包括网络层、工作线程等,比较耗时),最后还要应用一些解码的选项(Options)


解决方案:在 Application 的 onCreate 方法中,在工作线程调用一次 GlideApp.get(this)


override fun onCreate() { super.onCreate() // 使用 Anko 提供的异步工作协程,或者自行创建一个并发线程池


doAsync {


GlideApp.get(this) // 获取一个 Glide 对象,Glide 内部会进行初始化操作


}


}


3.3TraceView 的使用 - 数据采集与数据分析


TraceView 是什么,TraceView 是 Android 平台特有的数据采集和分析工具,主要用做热点分析,找出最需要优化的点。TraceView 从代码层面分析性能问题,针对每个方法来分析,比如当我们发现我们的应用出现卡顿的时候,我们可以来分析出现卡顿时在方法的调用上有没有很耗时的操作,通过 TraceView,可以得到两种数据。


· 单次执行最耗时的方法


· 执行次数最多的方法



要打开上面的面板,代码中一般有两种方式:


· 第一种方式:


  1. 首先选择跟踪范围,在想要根据的代码片段之间使用以下两句代码


Debug.startMethodTracing(“hello”);


Debug.stopMethodTracing();


生成的 traceview 文件会自动放在 SDCARD 上,没有 SDCARD 卡会出现异常,所以使用这种方式需要确保应用的 AndroidMainfest.xml 中的 SD 卡的读写权限是打开的,其中 hello 是 traceview 文件的名字,


  1. 然后用 adb 导出 traceview 文件。


adb pull sdcard/hello.trace C:\Users\lwf\Desktop


2. 然后启动 Android Device Monitor–>File–>openFile,打开 traceview 文件即可。


· 第二种方式:


1.同样是要先打开 Android Device Monitor



2.先选择应用进程,然后点击 Start Method Profiling(开启方法分析),按钮会变为 Stop Method Profiling(停止方法分析),开启方法分析后,对应用的目标页面进行测试操作,测试完毕后停止方法分析,界面会自动跳转到 DDMS 的 trace 分析界面。


两种方式的


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


对比:第一种方式更精确到方法,起点和终点都是自己定,不方便的地方是自己需要添加方法并且要导出文件,第二种方式的优缺点刚好相反。


四、总结




关于应用启动加速,一般从以下几个方面来入手:


· 利用主题快速显示界面;


· 异步初始化组件;


· 梳理业务逻辑,延迟初始化组件、操作;


· 去掉无用代码、重复逻辑等。


开发过程中,对核心模块与应用阶段如启动时,使用 TraceView 进行分析,尽早发现瓶颈。

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android性能优化之启动速度优化,Android面试资料集合