周星馳的電影《功夫》裏面借火雲邪神之口說出了一句至理名言:“天下武功,唯快不破”。
在移動互聯網時代,同樣如此,留給一個公司的窗口往往只有很短的時間,如何把握住這個時機,迅速開發出產品,成爲至關重要的一環。相對傳統互聯網時代的PC產品,用戶對移動端產品的容忍度更低。而一款移動應用在推出的時候可能只是接近完成的狀態,這就需要通過快速的迭代開發來更新產品,不斷完善產品來留住用戶。同時,通過更新產品也能喚醒一些沉默用戶,讓一些原本下載了應用但使用次數非常少的用戶給該應用多一次機會。
所以快速迭代成爲移動互聯網時代的一個重要生存法則。
1. 爲什麼需要性能優化?
上面說到,在時間窗口期內開發出產品是極端重要的,但是雖然基本功能我們實現了,但是開發出來的產品代碼運行的效率怎麼樣呢?我們的App用戶給用戶的體驗如何呢?
- 我們的App在低端機上經常ANR、閃退、卡頓等
- 我們的App在其他分辨率上顯示慘不忍睹?
- 我們的App在不同網絡的情況下如何處理的
- …
我們的App體驗如此之差,導致大量的用戶流失。這些迫使我們認識到性能優化是非常重要,某種程度上甚至超過了新功能的開發。
也驗證了一句話:“別人有的我們也有,而且比他們的要好要快。”
做Android開發已經3年了,期間也開發了不少App了,最開始寫App的時候,只追求迅速完成所需要的功能,後來隨着對相關知識的熟悉,再回頭看之前寫的代碼,也知道有哪些改進和優化的手段了。性能優化,一方面需要自身能力的提高,另外一方面,也需要有意識去學習優化技術,並應用於自身項目的開發中。
2. 性能優化技術
我們的Android App開發除了NDK之外,使用的都是Java語言,而Java語言是一種基於虛擬機JVM運行的語言,所以相比C/C++語言來說,效率是比較低的。Java需要佔用大量內存來換取執行速度,而不定期的GC機制,直接導致Android界面的卡頓現象。
相比Apple的iOS,Android要面對無數不同的硬件組合,分辨率,驅動等,導致App質量參差不齊。
性能優化技術,簡而言之,就是提高我們程序的性能,讓我們的應用更快,更少使用CPU資源,更少使用內存。
3. 性能優化筆記提綱
性能優化是一個非常大的課題,在這裏目前準備寫8篇筆記來記錄,提綱如下:
1. 如何書寫優秀代碼?- 2. 程序性能測試
- 3. App內存優化
- 4. 圖片緩存技術(ImageCache及Image SD卡緩存技術)
- 5. 數據庫優化
- 6. 網絡優化
- 7. App UI優化
- 8. 性能調優工具