提升進(jìn)入界面的速度

在同質(zhì)化嚴(yán)重的今天, 基本上每個小領(lǐng)域都有眾多應(yīng)用提供著相似的功能,想提升留存率,給用戶良好的使用體驗,不斷優(yōu)化性能顯得格外重要。

應(yīng)用除了有內(nèi)存占用、內(nèi)存泄露、內(nèi)存抖動等看不見的性能問題外,還有很多看得見的性能問題,比如進(jìn)入界面慢、點擊反應(yīng)慢、頁面卡頓等等,這些看得見的體驗問題會嚴(yán)重影響用戶使用APP的心情,但用戶的情緒又無法通過異常采集、數(shù)據(jù)分析來發(fā)現(xiàn),盡早優(yōu)化APP的性能體驗非常重要,會在一定程度上提升用戶的留存率。

本文結(jié)合最近一段時間對項目中APP各界面進(jìn)入速度的優(yōu)化,總結(jié)一下進(jìn)入界面慢的優(yōu)化方案。

先從Activity的生命周期說起

Paste_Image.png

應(yīng)用必須在走完FirstActivity的onPause方法后才會跑SecondActivity的onCreate方法,F(xiàn)irstActivity的onStop和onDestory方法不會影響到進(jìn)入SecondActivity的速度。因此如果我們要優(yōu)化從FirstActivity跳轉(zhuǎn)到SecondActivity的速度,需要從FristActivity的onPause和SecondActivity的onCreate、onStart和onResume方法入手。onStart方法通常干的事情比較少,頁面之間跳轉(zhuǎn)慢主要是因為在FirstActivity的onPause和SecondActivity的onCreate、onResume方法耗時導(dǎo)致,這個過程需要執(zhí)行的操作主要有:

  • 保存FirstActivity界面中的一些狀態(tài);
  • 加載SecondActivity的布局;
  • 初始化SecondActivity。

針對上面的分析我們可以從如下四個方面入手:

  • 耗時任務(wù)異步處理;
  • 布局文件優(yōu)化;
  • 不可見視圖需要時加載;

優(yōu)化實踐

耗時操作異步處理

避免在上一個頁面的onPause(), 下一個頁面的onCreate(), onStart()和onResume()方法中執(zhí)行耗時操作, 包括耗時算法。 如果必須執(zhí)行耗時操作, 采用異步處理的方式執(zhí)行。

使用ViewStub優(yōu)化布局文件

有的界面光是加載布局就需要500ms左右,再加上界面的初始化和上一個界面的狀態(tài)保存操作,頁面跳轉(zhuǎn)時會有嚴(yán)重的遲滯感。對于布局文件的優(yōu)化最重要的兩條是:

  • 布局文件不要嵌套太深;
  • 對于不需要進(jìn)入界面就立即顯示的視圖,強(qiáng)烈建議使用ViewStub。

布局文件嵌套太深標(biāo)示著需要更多次的布局、測量和繪制,會導(dǎo)致耗時更多,這個可以使用android自帶的“hierarchyviewer”查看,邊優(yōu)化邊看效果;但有時候即使布局足夠扁平,加載布局文件時還是會比較耗時,因為布局文件中的視圖太多了,此時對于不需要進(jìn)入界面就需要顯示的視圖,可以使用ViewStub來延遲加載,比如加載的進(jìn)度條、特定狀態(tài)下出現(xiàn)的倒計時和動畫等。

總結(jié)

性能優(yōu)化是一個持續(xù)的過程,界面跳轉(zhuǎn)效率只是一個性能指標(biāo),更快地跳轉(zhuǎn)對于用戶來說有著更好地體驗,優(yōu)化界面跳轉(zhuǎn)速度的關(guān)鍵點如下:

  • 關(guān)注FristActivity的onPause和SecondActivity的onCreate、onStart和onResume這4個方法中執(zhí)行的代碼是否有耗時操作。
  • 對布局文件的優(yōu)化

將優(yōu)化的經(jīng)驗總結(jié)出來,并運用到后續(xù)的開發(fā)中。
優(yōu)化APP的性能問題在一定程度上能夠提高用戶的留存率,是一件很有價值的事情。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容