技術問題,如何讓安卓app的流暢度提高?

時間 2021-05-05 14:59:21

1樓:Warning

我覺得Android流暢度大致包括兩個方面:效能的流暢、UI的流暢

效能的流暢主要清楚乙個原則,主線程也就是UI執行緒只做UI相關操作,其他耗時操作盡量在子執行緒處理,另外還有就是盡量控制好應用的記憶體占用

UI的流暢,尤其是listview這種控制項的流暢性,主要就是看布局的技巧了,layout層級不要太多,盡量三層以內,學會使用viewStub這種懶載入控制項,這種網上講解有很多

2樓:

過度繪製,記憶體洩露,該在後台做的工作放在了UI執行緒,可以分步載入的一次性全部載入,反射。。。其實我覺得優化最大的難點,往往是找到不流暢的真正原因。

3樓:乙隻程式設計師

不要占用主線程。

說個簡單點又暴力的解決方案,接入blockCanary,把多於200ms的操作堆疊列印出來,然後根據堆疊不斷優化。。。優化好了再把200ms改為100ms。

4樓:大師兄

對其他答案的一點補充

1、布局上優化,布局盡可能簡單,減少巢狀,熟練使用RelativeLayout可以減少很多巢狀。在setcontentview(int id)的時候,實際上是去解析xml布局檔案然後建立對應的View物件,布局越複雜解析的時間長,建立的物件也越多。

2、service,有些人可能會習慣把一下操作放在service中,然而service和Activity都是在同一執行緒中(UI執行緒),service一旦有耗時的操作就會影響到介面流暢性。ps:公司另乙個專案組就遇到這種問題,在service中開了定時器,每隔1秒執行操作,然後就造成了介面每隔一秒都會卡鈍一下,不管是什麼手機。

幾個人找了半天沒找到原因,直到我告訴他們service也是在UI執行緒。。。

5樓:高爺

乙個是響應速度,要保證介面之間跳轉的時候沒有延遲,也就是說要保證onClick之後,

1. 此Activity/Fragment的pause不會占用主線程太多時間

2. onClick事件裡面不要寫耗時的操作

3. 新的Activity的create、start、resume等生命週期函式不要占用太多時間

耗時操作可以等介面初始化好之後再去做,這樣才能保證響應速度能達到使用者可以接受的程度!

另外乙個是流暢性,這個就是說使用者在某個介面操作的時候,不要出現卡頓(掉幀)的情況!這種情況比較複雜,所以要case by case地去解決!推薦用Systrace和Method Trace等效能工具來發現和排查!

以上理論知識大家都懂,不過在實際開發中,情況要複雜的多,有的介面設計就很複雜,所以初始化就很慢,有的業務需求就是耗時,就是得在主線程裡面去做……

所以其實也是乙個博弈的過程,和設計人員博弈、和時間博弈(理論上時間可以搞定一切)、和需求博弈、和自己博弈!

不過解決這種問題的流程一般不變:

1. 發現問題

2. 分析問題

3. 找到乙個大家都能接受的解決辦法

4. Fix

5. 以上等於沒說

該如何讓現有的安卓 App 設計風格適配為 Android L 風格?

Neavo 簡單來說使用盡可能的使用系統控制項,並繼承系統樣式就好不過系統控制項就那麼多,很多情況下不能覆蓋我們的需求,還是得自製控制項這個時候就開始出現各種坑了,比如上面說的Z軸的問題,如果想在Pre L上實現不同的投影高度,那麼每乙個控制項的每乙個陰影都要自己計算自己畫 效能問題暫且不考慮,有這...

如何看待光遇iOS與安卓合服的問題?

想要合服的玩家一起去合服區,不想合服的玩家就在自己的區玩可以嗎?我真的想和我朋友一起玩,她不敢跑暮土,我不想每天都跑全圖,我們都想好了分工跑圖,她拿老奶奶髮型我拿老頭髮型,她霞谷畢業卡卡西,我暮土畢業龍骨猛1,這些我們都暢想半年了,tgc秋梨膏!每次搜合服訊息就看到吵架,安卓罵ios我不舒服,ios...

如何解決安卓系統吃記憶體 侵占ram的問題?

android延續了Linux的記憶體管理機制,那就是盡量把記憶體用完,執行程式的的資料快取都裝進記憶體裡,這樣可以加快程式讀取資料。早期的android記憶體太小,頻繁的程式切換會使記憶體資料不斷讀寫,系統就會時不時的卡一下。隨著手機硬體飛速發展,動輒1G 2G的記憶體會讓你根本不用擔心記憶體還剩...