Top Down:方法的调用栈信息,我们可以通过分析方法调用栈过程中的各个方法的耗时时间,来确定是在那个过程中耗时较多; Flame Chat:又称火焰图,是以时间条的形式对方法的耗时进行记录,我们一般在这个图上总览一下各个方法的耗时,真正去分析时间还得去Top down中分析具体的方法; Bottom Up:也是方法的调用信息,不过跟Top Down正好相反,是从底部往顶部查找的,一般不看这个模块,查找不方便,看第一个方法调用栈就可以;
4、黑白屏问题
当我们点击app图标时,在应用还没有启动起来的时候会有白屏或者黑屏代替,这是google提供的界面加载方法,不过用户体验不好,我们可以通过设置背景图的方法解决;
我们首先定义style属性,将windowbackground属性设置为我们的背景图片;
然后在activity标签中修改theme属性,使用我们自定义的style标签;
最后我们要在activity的oncreate方法中settheme设置回应用的主题,因为启动了之后还是需要使用应用的主题的;
添加背景图片并不能对启动速度有优化,只是为了提高用户体验度;
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
、、、
}
二、卡顿分析
卡顿分析跟启动速度的分析的操作基本相同,也是使用Android studio自带的profiler分析器进行分析;
- 打开Profiler界面,保持应用运行在设备上或者模拟器上;
- 点击cpu运行模块进入cpu分析界面;
- 在Select CPU Profiling mode中选择Trace System Calls,并点击record;
- 然后在设备上操作我们应用想要分析的界面,操作完成后点击stop;
- 此时会自动生成SystemTraceRecording界面;
我们可以在生成的界面上进行分析,界面显示了许多有用的信息,比如每一帧的消耗时间,如果时间过长会变红,并且在下面时间条显示具体方法名;
我们还可以在右边的Top down界面查看具体方法调用栈信息;跟启动速度优化的右侧界面相同;
三、布局分析
布局方面的优化主要可以从三个方面进行分析;
1、层级优化
framework层在对布局进行measure、layout和draw操作时是一层一层布局递归调用的,因此我们的布局层次结构越深,则耗时越久,我们应该尽量减少布局层级,扁平化处理布局;
我们可以使用Android studio自带的Layout Inspector布局分析器进行布局的分析;
- 在设备或者模拟器上运行我们的应用;
- Tools – layoutinspector进入布局分析界面,系统会自动检测应用进程并展示;
- 在左侧视图树界面查看视图层级;右侧属性界面查看view属性;
使用merge标签
有一些布局需要在多处使用时,我们可以将其抽离成一个单独的布局文件,然后在需要的地方直接include即可,此类布局就可以使用merge标签,这个布局在附加到别的布局中时,merge标签会自动删除掉,如果不使用merge标签,而是使用布局标签包裹,那么就会产生一层冗余的布局嵌套;
使用ViewStub标签
当布局中某个view或者viewgroup在特殊情况下才会显示时,我们可以使用viewstub标签,它不可见不占用资源,只有当我们设置为visible或者调用inflater方法时才会被初始化;
2、过度渲染
我们可以通过开启开发者模式的渲染选项查看是否存在过度绘制; 过度绘制一般采用考虑通过如下方式解决;
- 移除掉布局中不需要的背景
- 尽量使视图层级结构扁平化
3、布局加载优化
异步加载 可以通过使用androidX中的库进行布局的异步加载
implementation "androidx.asynclayoutinflater:asynclayoutinflater:1.0.0"
new AsyncLayoutInflater(this)
.inflate(R.layout.activity_main, null, new AsyncLayoutInflater.OnInflateFinishedListener() {
@Override
public void onInflateFinished(@NonNull View view, int resid, @Nullable ViewGroup parent){
setContentView(view);
//…
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://i-blog.csdnimg.cn/blog_migrate/ff999226d83aeef21fd14381d7de84c9.jpeg)
最后
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
最后针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
时间来学习,也可以分享动态给身边好友一起学习!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!