非商业转载请注明做译者、出处,并保留本文的原始连接:http://www.ituring.com.cn/article/125914程序员
郭霖,Android软件开发工程师。从事Android开发工做四年,有着丰富的项目实战经验,负责及参与开发过多款移动应用与游戏,对Android系统架构及应用层开发有着深刻的理解。2013年3月开始,在CSDN上发表Android技术相关博文,很快就得到了大量网友的好评。短短一年时间博客访问量超过50万次,评价近3000条。荣获CSDN认证专家,并被评选为2013年CSDN年度博客之星。2014年,他创做了《第一行代码——Android》一书。郭霖现就任于蜗牛移动,继续从事Android开发工做。服务器
问:你是如何成为一位Android开发者的?微信
也算是机缘巧合吧。以前我走的是Java Web方向,一次偶然的机会了解到了Android操做系统,我以为移动领域刚刚起步,潜力很大,并且正好又是使用的Java语言,专业和我很是对口,因而我就踏上了这条路。架构
问:为何要写《第一行代码——Android》这本书?它能为想要成为Android开发者的读者们解决什么问题?在看你的书以前,须要有什么样的技能和知识作基础?框架
我很喜欢看书,也看过不少的技术书,写书对于我来讲算是一个记念。至于为何要写《第一行代码——Android》这本书,我认为基础仍是很是重要的,这本书能够很好地帮助Android初学者入门,也能够帮助有经验的Android开发人员巩固基础。学习
写这本书的时候我是彻底站在初学者的角度上来写的,所以只要有Java基础就能够看。对于Java的掌握程度那固然是越熟练越好了,但最低要求是至少要懂Java的基本语法。学习Java的书籍实在是太多了,我也没有都看过,说不上哪本好,你们仍是本身找找看吧。优化
问:关于Android碎片化问题,你对开发者们有什么建议?spa
碎片化的问题确实让人很是头疼,这是因为Android系统开源的特性所必然致使出现的问题。在这种问题上我不敢说我对开发者们有什么建议,但我本身的作法就是不会为了少部分的用户群而去编写大量的兼容性代码。好比说如今Android 2.x的市场已经很是少了,但有不少的软件仍是必定要去兼容这些老版本的系统。我认为这种行为其实在必定程度上纵容了碎片化的产生,也变相致使Android新版本系统普及过于缓慢。固然了,没有提供一种简便升级系统的办法是Android新系统没法迅速普及最主要的缘由。碎片化问题即便谷歌都没有办法彻底解决掉,我以为做为一名普通的开发者就没有必要去深刻研究了。操作系统
问:Android 的后台推送原理是什么?和iOS 相比有什么区别?设计
后台推送的原理都是相同的,就是让客户端和服务器保持一个长链接,当服务器想要推送的时候,就发送一条消息到指定客户端就能够了。虽然说原理相同,但Android的推送要更加复杂一些,由于iOS系统中已经内置好了推送功能,只须要使用提供好的API就能简单地完成推送功能。而Android虽然说也提供了相似的GCM服务,但因为在国内使用受到不少限制,因此推送仍是要本身作的。不过目前国内也有一些第三方的推送平台,使用它们的话也能够很简单地完成推送功能。
问:对于想要从事移动开发的程序员来讲,iOS, Android, WP各有什么优点?哪一个将来前景更好?
从开发语言上来说,Java和C#相对简单,上手成本比较低,这是Android和WP的优点。但iOS目前也推出了Swift语言,很大程度上缓解了OC上手困难的问题。从用户群体上来说,Android和iOS基本上占据了绝大部分的用户群,WP的用户群体则相对较少。从软件的丰富程度来说,Android和iOS都拥有绝对的优点,WP短时间内并无赶超的势头。所以,将来的前景我仍然认为Android和iOS会相对较好,WP的发展状况较难预测。
问:一直以来,Android的内部功能相比于iOS都更胜一筹,好比先进的应用内分享机制、自由定制的launcher 和widget,等等,可是iOS 7 特别是 iOS 8 带来的新特性在很大程度上遇上甚至反超 Android,你怎么看?
我从没认为Android系统要比iOS更胜一筹,虽然说我本身是从事Android行业的,但我并不但愿Android能够干掉iOS。这两个系统各有各的优点,共存是很是合理的现象。至于iOS
7和8推出的新特性我认为是很正常的现象,一个系统要是永远没有创新,那就只能是等死。这条理论一样适用与Android身上,因此Android也在一直进步,好比最近Android
L系统的推出,在界面效果上甚至也有赶超iOS的趋势。谷歌和苹果都是伟大的公司,因此我不会片面的评价他们的系统到底谁比谁强。
问:你以为Android L的最大亮点是什么?对于开发者来讲,如何适应多屏开发的趋势?
Android L号称是Android历史上改变最大的一个版本,其中多数功能是系统内部的优化,好比ART运行环境、耗电性优化等。与应用层开发者相关的最主要的改变应该就是Material
Design,新的UI,新的控件,给人耳目一新的感受。另外,之因此敢称Android L是Android历史上改变最大的一个版本,是由于从这个版本开始,Android系统就再也不是仅仅应用于手机和平板上了,而是能够应用在手表、电视和汽车上。Android L中已经创建了Android Wear、Android TV和Android Auto这几个分支,也是为Android往后的多元化铺路吧。至于多屏开发的问题实际上是外界人把它想复杂了,Android系统发展到了今天,已经提供了太多不一样尺寸屏幕适配的解决方案,相信懂Android开发的朋友们都不会受这个问题困扰的。
问:你认为移动开发人员应该学习用户体验设计吗?如何入手?
所谓技多不压身,若是你有充足的时间和精力,多去学点东西确定是有好处的。用户体验设计能够在很大程序上帮助开发人员编写出更优秀的程序,能掌握这个本领的话对自身的能力也是有很大提高的。
问:要成为Android开发高手要通过几个阶段?
这种问题我不敢回答,由于我本身也还不是一个高手。可是就我自身的成长经从来说,首先,必定要把Java的基本功打扎实,而后就能够学习Android相关的基础知识了(好比说看《第一行代码》)。接着,能够去尝试编写一些小软件,这样基本就能达到入门水准了。
本身能写出来代码只能算是第一步,接着你还要能读懂别人写的代码,这是很重要的一门功夫,也是要慢慢培养的。等你掌握了这门功夫后,后面的发展方向就很是宽广了,能够阅读大家公司大牛写出的代码,以及各类开源框架甚至是系统的源码,不断充实本身。
问:对于想深刻学习底层架构的同窗,应该怎样阅读 Android 系统源码呢?
我以为阅读系统源码很是有必要遵循的一个原则就是抽丝剥茧、点到即止。应该认准一个功能点,而后去分析这个功能点是如何实现的。但只要去追寻主体的实现逻辑便可,千万不要试图去搞懂每一行代码都是什么意思,那样很容易会陷入到思惟陷阱当中。由于这些庞大的系统都不是由一我的写出来的,每一行代码都想搞明白,就会感受本身是在盲人摸象,永远也研究不透。若是只是去分析主体的实现逻辑,那么就有比较明确的目的性,这样阅读源码会更加轻松,也更加有成效。
问:读完《第一行代码》该如何开始下一步的晋级之路?
我以为基础知识掌握以后,并无统一的进阶方向,由于你已经拥有了开发不少功能的能力,后面应该根据公司的业务需求去深刻研究相关领域的技术,这个就因人而异了。但只要基本功掌握的足够牢固,不论是什么方向的技术,你必定都能势如破竹地拿下的。