最近发现app界面跳转时界面很是卡顿,非常的明显,看看日志打印了如下
Skipped 60 frames! The application may be doing too much work on its main thread
很简单也很直白的提示了,跳过了60帧,有可能在主线程做了较为耗时的操作,但是这些操作又不至于到使程序达到ANR的地步。
既然原因找到了咱们就动手了,于是开始查找activity的耗时的操作并进行相关的优化,本以为大功告成可以撸一把了,可是问题依旧。这就尴尬了,明明已经该优化的优化了呀,真是百思不得其解。于是Google了一下,发现了其中的奥秘,原来很多人也是一样优化后并没有太大的效果,其原因在于并不是activity中的代码初始化工作造成的,而是布局界面的layout造成的,无疑的是大家都在界面中使用了很多图片或者大图片,进而造成界面的绘制花费了很长的时间。
//imagview比如引用了一张大图
<ImageView
android:id="@+id/iv_play_dist"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_centerInParent="true"
/>
既然问题找到了,那解决的办法就简单了,如下给出一种办法:
playDistImageView= (ImageView) findViewById(R.id.iv_play_dist);
Glide.with(this).load(R.drawable.play_disc).into(playDistImageView);
思路很简单,就是不在layout文件中直接设置这张图,而是将其放到代码中进行设置,同时还可以使用图片加载框架进一步的优化。
等你做完这些,再次打开app,你会发现界面跳转时那么的如丝般顺滑。