最近發(fā)現(xiàn)app界面跳轉(zhuǎn)時(shí)界面很是卡頓,非常的明顯,看看日志打印了如下
Skipped 60 frames! The application may be doing too much work on its main thread
很簡單也很直白的提示了,跳過了60幀,有可能在主線程做了較為耗時(shí)的操作,但是這些操作又不至于到使程序達(dá)到ANR的地步。
既然原因找到了咱們就動(dòng)手了,于是開始查找activity的耗時(shí)的操作并進(jìn)行相關(guān)的優(yōu)化,本以為大功告成可以擼一把了,可是問題依舊。這就尷尬了,明明已經(jīng)該優(yōu)化的優(yōu)化了呀,真是百思不得其解。于是Google了一下,發(fā)現(xiàn)了其中的奧秘,原來很多人也是一樣優(yōu)化后并沒有太大的效果,其原因在于并不是activity中的代碼初始化工作造成的,而是布局界面的layout造成的,無疑的是大家都在界面中使用了很多圖片或者大圖片,進(jìn)而造成界面的繪制花費(fèi)了很長的時(shí)間。
//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文件中直接設(shè)置這張圖,而是將其放到代碼中進(jìn)行設(shè)置,同時(shí)還可以使用圖片加載框架進(jìn)一步的優(yōu)化。
等你做完這些,再次打開app,你會(huì)發(fā)現(xiàn)界面跳轉(zhuǎn)時(shí)那么的如絲般順滑。