周星驰的电影《功夫》里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”。
在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住这个时机,迅速开发出产品,成为至关重要的一环。相对传统互联网时代的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. 性能调优工具