“走向黑暗面!”我最近参加了班宁米尔斯的BigNerdRanchAndroid训练营,这在Twitter上引起了惊愕,因为我一直被认为是ObjectiveC和Cocoa的忠实粉丝,事实上我是BigNerdRanchiOS培训的老师营。参加安卓集训被曝光后掉了好几个粉丝。这就是我整个人气下降故事的开始。在Facebook的过去……大约一年前,我在门洛帕克的Facebook总部教授iOS训练营课程,有一次下课后我遇到了我在帕洛阿尔托工作的朋友Eduardo,他也是一名iOS开发人员或者,但是最近他开始做一些“坏事”,大部分时间都在从事Android开发。那个星期他碰巧在谷歌I/O,我不得不忍受几个小时关于谷歌酷技术的演讲。有点烦人,但还是不会动摇我的信念,尤其是对我这种“忠诚”的人来说。我们经常在Apple库比蒂诺总部前的一家牛排馆吃晚饭。更糟糕的是,他有一个坏习惯,那就是每次他走进满是Apple员工的餐厅时,都会戴上谷歌眼镜!我经常想知道安全是否会把我们赶出去。安德森先生,您不觉得这副眼镜很不合适吗?愚蠢的混血儿让我们面对现实吧:戴上谷歌眼镜会让你看起来像个白痴……或者像书呆子一样的白痴。我抗拒了好几天,终于妥协了,想试试看(当然,我也不是很感兴趣)。看了看米友苹果的保安,赶紧戴上了……人气下降也跑不掉了。我带来的这对肯定只是样机,虽然是样机,但也是我这几年唯一见到的真机。老实说,你真的不能看起来更傻了。这种原始的书卷气可能会让一些同志无法抗拒,如下图所示。在回家的路上,为GoogleGlass开发应用程序的想法突然出现在我的脑海中。几年前我实际上尝试过第一代Nexus,老实说,这款手机真的不适合我,屏幕和下面的塑料之间有缝隙,每次我用它打电话时它都会撕裂掉我的头发。一部会让我秃头的电话不值得我花时间,但是眼镜……这些天回到班宁米尔斯,我的日程安排总是那么满,以至于我几乎不可能停下来学习几周的活动订购新的东西.无论你多么努力,(分心)它都会悄悄靠近你。在BanningMills,一头山狮正在捕食毫无防备的机器人(Android)……在看完我疯狂的日程安排后,Hillegass博士开了他的药方:在佐治亚州的乡村接受为期一周的全沉浸式Android培训。每天学习10到12个小时,营地感觉就像一次短途旅行:没有打扰,没有电话,没有电子邮件。在BigNerd牧场训练营,你只能专注于一件事:学习一些“书***”的东西。我估计,与我的Android同学和我们的导师KristinMarsicano在BanningMills一起度过的一周至少为我节省了三个星期的自学时间。最重要的是,我有机会从紧张的赛程中得到一点喘息的机会,从这点来看也是值得的。在iOS开发者眼中学习Android的过程让我有点意外,因为我一直认为所有的环境都会相似。毕竟iOS和Android系统都是基于Unix的,两种开发语言也是基于C的。很遗憾,事实并非如此。Android有一个特殊且非常有趣的功能,它不同于我以前见过的任何其他操作系统。在iOS中,包括几乎所有的其他操作系统,应用程序是整个系统中最基本的交互单元。但在Android上并非如此。它的基本交互单元叫做Activity,有点类似于iOS中UIViewController的概念。不同应用程序中的Activity可以独立通信,因此可以成为您应用程序的不同入口。所以当你想完成一个任务时,比如给邮件添加照片,你可能会用到几个Activity(其他应用的MailActivity和PhotoActivity)。一个设计良好的Android应用程序可以很好地集成到OS中,成为一组松散耦合的Activity。是不是很棒?但是相比iOS中UIViewController的通信,Activity之间的通信要复杂的多。通信行为被封装在一个名为intent的类中。这种通信机制让我想起了Windows统治地球的时候,它与使用CORBA访问分布式对象的方法非常相似。Activity和Fragments(类似Activity的概念)在屏幕上的组织方式也与iOS有很大不同。对于新手来说,你会发现根本就没有UINavgationControler这个东西。整个系统已经是一个Activity栈结构。快来学安卓吧骚年,饼干来了!AndroidStudio、BigNerdRanch书籍和cookie。但最令人惊讶的是,Android的语法比iOS的要冗长得多。特别是当一个iOS开发者告诉你这个东西很啰嗦的时候,你一定要认真对待!最重要的原因之一是AndroidSDK没有抽象一些行为。比如你在iOS中新建一个UIViewController,你不需要为它指定xib文件的名字,除非你在做一些奇怪的操作。否则,UIViewController会查找与自己同名的xib文件。在Android中,您必须一遍又一遍地手动指定每个布局文件。从这里你可以看到你可以把你在一个平台上学到的东西带到另一个平台上。iOS开发者也可以从Android的布局技巧中有所收获,可以用来弥补Cocoa中AutoLayout的不足。作为一名iOS开发者,我最怀念的是一门没有准备好的语言(抱歉,没办法),和块,CoreData。学习Android使我成为更好的iOS开发人员,并让我有机会从全新的角度看待移动开发。了解这两个平台的技术使我成为了更好的移动开发人员。没有回头路:我是一名经过认证的Android开发人员。如果你是业余开发者,你可以选择忽略其中一个平台,但作为专业开发者,掌握这两个平台的技术对你的职业生涯或者公司的业务前景都具有重要意义,无论你喜欢其中之一?所以如果你是一个iOS开发者,你可以继续拿Android开玩笑,但你还是应该学习它。如果你是安卓开发者,快来和我们一起体验另一个世界:我们保证不会嘲笑你夸张的“电话板”。我保证。你知道为什么安卓平板的市场份额不重要吗,因为都是手机!...原文链接:FernandoRodriguezRomero翻译:袁鑫翻译链接:http://blog.jobbole.com/68744/
