Skipped 60 frames! The application may be doing too much work on its main thread

最近发现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,你会发现界面跳转时那么的如丝般顺滑。

猜你喜欢

转载自blog.csdn.net/ngl272/article/details/70217109