如今,App日益重視用戶的交互體驗,瞭解性能優化的方式則能夠有效提升用戶體驗。對此,廣州品向科技總結多年App開發經驗整理App開發中提升性能優化技巧,但願能夠幫你改善應用的流暢度、渲染時間和其餘方面的性能表現。前端
對App進行性能優化是一份冗雜沉重的工做,這不只是由於構建一個App須要先後端協做,並且須要多方面的技術棧:數據庫、後端、前端,須要運行在多種平臺:iOS,安卓,Chrome,Firefox,Edge,這太複雜了!不過,仍是有一些歷經實踐的通用方式能夠用來優化App的性能,這也是咱們品向科技內部嚴格要求App開發技術人員的基本準則。ios
提高App開發性能的技巧有哪些?品向科技整理以下:nginx
移動應用市場用戶爭奪戰日益激烈,原來作App靠的是拼想法、拼創意、拼是否抓住用戶痛點;如今精細化用戶體驗成爲了一個App可否留存用戶的關鍵問題,一旦用戶以爲體驗不順暢,立刻就有競品App後補,如何開發高性能的移動應用,已成爲開發者最爲關心的問題之一,對此,品向科技特地總結了如下提高App開發性能的技巧:算法
一、規劃好應用功能,作好應用架構評估數據庫
用戶體驗開始於App開發初始規劃階段,當你夢想開發一個App改變世界以前,先想好App開發主要解決用戶的哪些真實需求,提煉出App的核心功能,一個App並非功能越豐富越好,核心功能才能爲用戶帶來不可替代的價值。編程
想清楚核心功能,才能作好應用架構評估,應用程序性能不佳多是由於可擴展性限制、不匹配的技術選擇、低效的網絡配置以及UI設計不符合移動端使用習慣等因素,清晰完整的App架構規劃有利於構建用戶所需的系統功能構建(具體可查看馬海祥博客《詳解APP軟件開發過程當中的解構和重構》的相關介紹)。後端
二、良好的編程習慣瀏覽器
提高App開發性能的技巧有哪些?緩存
良好的編程習慣不只可使程序代碼易於讀懂和修改,還可使程序結構合理、清晰。性能優化
開發人員能夠從程序結構模塊化、命名規則清晰易懂、註釋方法簡潔明瞭,文本格式易讀等方面開始養成良好習慣,讓應用開發事半功倍,提升程序的執行效率。
三、改善程序啓動和響應的時間爲了加快App響應速度,咱們能夠在UI線程上建立足夠的對象,以便完善公共API功能。
而後將功夫用到後臺線程上,將費時的操做從主線移動到一個單獨線程中,緩存從磁盤存儲打開和閱讀,客戶端證書在後臺加載。
Cookies反序列化和解碼在後臺,經過這些改變,UI將更快地出如今屏幕上。
四、使用最新版本的軟件開發SDK、API
隨着Android、ios平臺的不斷髮展,平臺提供的功能也在不斷更新,一些功能可能被新功能徹底替代。
核心API獲得修正版(bug fix)和性能改進,幫助開發者編寫出運行更穩定、響應更迅速的應用程序。
五、使用SuperWebView,讓App支持動態更新
已經上線的App在須要更新新功能時,可使用APICloud平臺的SuperWebView功能,基於SuperWebView開發的功能支持動態更新,能夠繞過應用商店的審覈,用戶無需從新下載App,就能讓新功能悄無聲息的更新到用戶手機上,讓原生App的新功能開發變得更高效。
六、使用Android性能調優利器StrictMode
StrictMode意思爲嚴格模式,是用來檢測程序中違例狀況的開發者工具,最經常使用的場景就是檢測主線程中本地磁盤和網絡讀寫等耗時的操做。
使用嚴格模式,系統檢測出主線程違例的狀況會作出相應的反應,如日誌打印,彈出對話框亦或者崩潰等。換言之,嚴格模式會將應用的違例細節暴露給開發者方便優化與改善。
七、使用Hierarchy Viewer工具
Hierarchy Viewer能夠幫助調試應用佈局,它會讓你選擇設備或者模擬器上正在運行的進程,而後顯示其Layout的樹型結構。
每一個塊上的交通燈分別表明了它在測量、佈置和繪畫時的性能,幫你找出瓶頸部分。
八、優化應用佈局
簡單的屏幕可讓應用使用輕鬆流暢,使用Lint工具能夠查看View層級哪些地方能夠優化。
它能夠幫助你找到沒必要要的控件嵌套以及縮減佈局資源的其餘方法,以儘可能減小資源的使用。
它讓你能夠了解哪些佈局控件多是多餘的或沒必要要的。
控件越少、佈局層次越淺,性能就越好。
九、優化應用的耗電量
若是讓用戶發現你的應用很耗電,那就不怪用戶立刻卸載應用了,應用之因此耗電,是由於使用了手機的某種資源,根據谷歌官方統計,典型的耗電場景有調用GPS定位、網絡傳輸、屏幕亮度、CPU頻率、內存調度頻度、wake_locker時間和次數,若是你的應用能優化以上幾點,就能下降耗電風險。
十、規劃應用的離線體驗
當用戶沒法鏈接WiFi或其它網絡信號時,用戶使用App時仍然可以有極佳的可用性,那必定能給你的App加很多印象分。
在規劃App應用時,應該將這一設計方法考慮其中,提早規劃好App在離線狀態下的運營模式。
十一、按需加載
按需加載資源或者說懶加載資源(特別是圖片)對優化Web App的性能有很大幫助,對於圖片較多的頁面,使用懶加載一般有如下三點好處:
(1)、減小併發請求,緩解服務器壓力,提升加載速度。
(2)、減小瀏覽器的內存佔用率。
(3)、下降服務器的負載。
圖片或其餘資源懶加載的方案通常是,在程序啓動時加載首屏資源,在頁面滾動時持續加載即將進入視口的資源,因爲這種方法每每須要與頁面結構和開發方式相協調,因此經常使用現有的插件和擴展來實現惰性加載。
一個典型的按需加載實例就是谷歌的圖片搜索工具,點擊這一連接並滾動頁面,打開開發者工具注意資源的加載時間。
十二、緩存
緩存經常使用來存儲頻繁調用的數據,當緩存後的數據再次被調用時,就能夠由緩存直接提供數據,提升數據的響應速度。
一般來講,一個App都是由多個組件構成的,在這些組件中都能發現緩存的影子,好比動態內容服務器和客戶端之間使用的緩存,經過減小通用請求下降服務器負載,能夠改善頁面的響應時間;好比代碼中的緩存處理,能夠優化某些通用的腳本訪問模式。此外,還有數據庫緩存和長進程緩存等。
簡而言之,緩存是改善應用程序響應速度和下降CPU負載的有效方式,在一個開發體系中,最難的不是如何使用緩存,而是找出哪裏適合使用緩存。
對於這一問題,我仍是建議使用事件分析工具(profiler):找出性能瓶頸,檢測緩存是否成功,測試緩存是否容易失效……這些問題都須要歷經實踐才能得出有效的結論。
1三、性能剖析
性能剖析是應用程序進行性能優化的重要步驟,在馬海祥看來,盲目地優化應用程序每每會下降生產力、產生新的痛點且難以維護,性能剖析的做用就是要找出應用程序中潛在的風險區域。
對Web應用程序來講,響應速度是一個很是重要的衡量指標,因此開發者都會盡量地去提升資源的加載速度和頁面的渲染速度。
此外,若是合理分析內存的使用率,也將有效提升應用程序的性能,若是你的頁面中有大量的視覺元素(好比動態的表格)或者大量的交互元素(好比遊戲),那麼對內存使用的剖析就能夠有效減小卡頓,提升幀速。
找出性能的核心痛點,才能讓你更加高效地進行性能優化。
相對而言,對後端進行性能剖析稍顯困難,通常而言,從最耗時的請求入手查找相應的服務器是個不錯的方法,這裏並無推薦任何有關後端的性能剖析工具,這是由於具體的剖析工具要視具體的後端技術棧而定。
1四、負載均衡
簡而言之,負載均衡相似於一種輪詢方案,基於反向代理服務器nginx或者成熟的分發網絡,好比Cloudflare和Amazon CloudFront構建。
爲了實現負載均衡,須要將動態內容和靜態內容進行分離,便於執行並行鏈接。換言之,串行訪問削弱了負載均衡檢索最佳路徑並進行分發的能力。此外,並行加載資源還能夠加快應用程序的啓動速度。
負載均衡也能夠構建的很精細,若是數據模型不可以很好地與最終的一致性算法或緩存保持良好的匹配關係,那麼必將致使諸多問題,幸運的是,大多數的應用程序所請求的數據都是一個縮減集,該縮減集自己具備較高級別的一致性,若是你的應用程序尚未具有這樣的能力,那麼你須要考慮重構它了。
1五、算法
在大多數狀況下,選擇更高效的算法能夠比局部優化得到更佳的收益。
從某種意義上說,對CPU和內存進行性能剖析有助於幫助開發者找出應用程序中較大的性能瓶頸,若是這些瓶頸並非由代碼的錯誤引發的,那頗有可能就是算法的問題。