蘋果粉有福啦!
蘋果新知與使用技巧等你來挖掘

如何避免iOS應用卡頓

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的功能,你會發現不一樣的使用和便捷。

隨時留意本站最新蘋果資訊:蘋果粉點點讚 » 如何避免iOS應用卡頓