iOS應用除了閃退問題外,卡頓問題也會對APP帶來差評,甚至流失更多的使用者。卡頓是什麼呢?卡頓就是應用執行不流暢的現象,給使用者的直觀感受就是點選螢幕操作有停頓、響應緩慢、介面卡死等。輕微的卡頓問題會影響使用者體驗,嚴重的情況更會造成應用不可用。那麼,針對iOS應用卡頓可以使用友盟+U-APM來解決卡頓的問題。
作為一名有態度、充滿情懷的開發者,當然就是立馬擼起袖子準備修復了。那麼問題來了,我們要從哪下手呢?
俗話說“治病先治根”,那麼就要了解到卡頓是怎樣產生的了。
建立一個UI Button,當用戶點選的時候,主執行緒會響應及處理點選事件,這裡是執行handleButtonAction方法。handleButtonAction方法發起了一個網路請求下載圖片。必然的,這是一個耗時的操作。
在iOS應用中,所有的UI操作及更新都是在主執行緒完成,並且主執行緒的runloop是逐個處理使用者事件的(當然其他的runloop也一樣),所以主執行緒必須等待上一次事件處理完成後才能繼續響應下一次事件。
由於在主執行緒內發起耗時網路請求,主執行緒只能停止響應接下來的所有使用者事件,等待網路請求結束。在等待的這個過程中,應用就停止響應了,也就是出現卡頓現象。
為了更好的理解主執行緒的runloop,我們來看看iOS應用的執行機制。
在 iOS 應用啟動後,系統會自動建立主執行緒並開始執行它的 runloop,監聽處理分發事件,當沒有事件發生時進入休眠狀態,有事件發生時系統會將接收到的事件放在一個佇列裡,然後喚醒 runloop 依次處理事件。
絕大部分使用者感知到的卡頓就是由於主執行緒阻塞了,在處理某次事件消耗了過長的時間,導致主執行緒處於等待狀態,無法及時響應使用者的下一次輸入事件。
由於iOS 上的 UIKit 只能在主執行緒進行處理,導致開發者在開發過程中不經意間在主執行緒做了一些消耗時間的工作,導致了應用卡頓。
根據上述內容我們瞭解到了是什麼原因導致卡頓的,接下來就是如何避免卡頓的問題了,友盟+u-apm監控平臺可幫助到大家!
避免卡頓的黃金法則就是不要讓主執行緒乾重活,例如網路請求,讀寫大檔案,複雜的運算等一些耗費大量系統資源及時間的任務。
充分利用好 iOS 的多執行緒,如 NSThread、NSO peration Queue,GCD 等幹髒活、累活,讓主執行緒能及時迅速的響應使用者事件。
主執行緒輕鬆了,應用就流暢了,使用者也就會越來越多,使用者的使用感爽了,就不用擔心差評的問題了,五星評價也就越來越多嘍~
那麼我們根據上面的黃金法則修改下handle Button Action方法,用GCD 來進行網路請求。經過修改之後,現在主執行緒就不會發生阻塞了,迅速的執行完使用者的點選事件後,然後等待響應使用者的下一次事件。
除了在開發過程中開發者需要時刻牢記黃金法則,避免寫出阻塞主執行緒的程式碼,我們還需要一套監測機制,來幫助我們及時的發現應用卡頓,第一時間定位並修復,給使用者如絲般順滑的操作體驗。
應用釋出後如果碰到使用者反饋卡頓,我們又該如何去定位解決問題?
一個比較常見的場景:使用者反饋應用卡頓,客服人員反饋給開發者,開發者要求使用者提供更加詳細的資訊以定位問題,但是問題又來了,很多時候我們聯絡不上使用者啊!怎麼辦?熬夜加班逐行檢查程式碼,說多了都是淚。
那麼,友盟+U-APM作為一款應用效能監控平臺,這不就派到用場了嘛~不僅可以解決開發者對iOS卡頓問題的煩惱,還可以協助APP應用,讓使用者體驗到APP的流暢性。友盟+U-APM同時提供雲真機測試能力,助力開發者從研發測試質量驗收到線上問題復現排查,保障應用品質,提升測試效率。在雲真機測試期間自動採集崩潰資訊,提供詳盡的崩潰報告協助篩查,真正實現監控測試全流程深度打通。
U-APM應用效能監控平臺,透過輕量級的整合接入即可擁有實時、可靠、全面的應用崩潰、ANR、自定義異常等捕獲能力,及卡頓、啟動分析、記憶體分析、網路分析等效能監測能力,支援多場景、多通道智慧告警監測,幫助開發者高效還原異常、卡頓使用者的訪問路徑和業務現場,縮短故障排查時間。這一塊的功能是我比較喜歡的,建議各位開開者有以上這些煩惱時,都可以試試運用上U-APM的功能,你會發現不一樣的使用和便捷。