一個iOS開發人員學習Android之路

來源:互聯網
上載者:User

“朝向黑暗的一面!”

最近我參加了一次Big Nerd Ranch在Banning Mills的Android訓練營,這件事在Twitter上引發了一片錯愕,因為我一直被認為是一個Objective C和Cocoa的腦殘粉,事實上我就是Big Nerd Ranch iOS訓練營的老師 。

 

參加Android訓練營的事曝光後讓我掉了好幾個粉絲。這是我整個人氣下滑故事的開始。

在Facebook的一段往事…

差不多一年前,當時我在Menlo Park的Facebook總部教iOS 訓練營的課程,有一次下課後我遇到了一位我在Palo Alto工作的朋友Eduardo,他也是一位iOS開發人員,不過最近他開始做一些“不好的事情”,他大部分的時間已經在從事Android開發。那周他 剛好參加了Google I/O大會,我不得不忍受幾小時關於Google炫酷技術的教化。雖然有點煩人,不過還是不會動搖我的信念,尤其像我這樣”忠心”的人。

我們經常在蘋果Cupertino總部門口的一家牛排館吃晚飯。雪上加霜的是,他每次進入這家全是蘋果員工的餐廳時有一個很不好的習慣,那就是帶著……沒錯,Google眼鏡!我常常在想保安會不會把我們踢出去。

安德森先生,你不覺得這幅眼鏡很不合適嗎?

呆瓜混合體

面對現實吧:帶上Google眼鏡讓你看起來就像一個傻叉一樣…還是一個書獃子型的傻叉。我反抗了好幾天,最後還是妥協了想要去試一下當然,我不是真的那麼感興趣)。

在看了一圈周圍米有蘋果的保安之後,我迅速的戴上了它…人氣下滑是跑不了了。

我帶的這副絕對只是一副原型機,雖然是一副原型機但是卻是我這幾年見過的唯一一副真實裝置。老實說帶上它你真的不能看起來更傻了。這種原始的書獃子氣對某些同志可能會有不可抗拒的吸引力,帶上它看起來就像下面這位。

在我回家的路上為Google眼鏡開發應用的想法突然闖進了我的腦海。事實上幾年前我曾經試過第一代的Nexus,老實說這台電話真的不是為我準備的,它的 螢幕跟下面的塑料之間有一條缺口,每次用它打電話都會扯掉我的頭髮。一部會讓我變成禿子的電話不值得浪費我的時間,不過這副眼鏡嘛…

回到Banning Mills

如今我的行程表總是非常滿,讓我幾乎不可能停下來用幾周的事件去學點新東西。不管你怎麼努力,分心)它總會偷偷的冒出來接近你。

在Banning Mills,一隻山獅Mountain Lion)正在毫無防備的機器人Android)上方掠食…

在看過了我瘋狂的議程表後,Hillegass醫生給出了他的藥方:在喬治亞州的鄉下進行一周的全浸式Android培訓。

雖然每天要學習10到12個小時,這個訓練營感覺卻像一次短途旅行:沒人打斷,沒有電話,沒有郵件。在Big Nerd ranch訓練營,你可以只專註一件事情:學一些“書獃子”的東西。

我估算了一下在Banning Mills與我的Android同學以及我們的導師Kristin Marsicano共度的一周 ,起碼節省了我三周自學的時間。最重要的是我有機會從緊張的行程裡得到一絲喘息,從這點來看就很值了。

iOS開發人員眼中的Android

學習安卓的過程讓我有些意外,因為我一直以為所有的環境會很相似。畢竟,iOS與Android系統都是基於Unix,兩者的開發語言也都是基於C的。可惜事實並非如此。

Android有一個特殊的並且十分有趣的特性,和我之前所見過的其他OS都不同。在iOS中包括幾乎其他所有的OS,應用是整個系統中最基本的交 互單元。但在Android上不是這樣。它的基礎互動單元叫做Activity,有點類似iOS中UIViewController的概念。

不同應用中的Activity可以獨自通訊因此可以變成你的應用的不同入口。所以當你想要完成一項任務,比如在郵件中添加一幅照片,你可能會用到好 幾個Activity郵件Activity和其他應用的Photo Activity)。一個設計良好的Android應用可以很好的融入到OS之中,變成一套松耦合的Activity。是不是棒極了?

不過相比iOS中UIViewController的通訊,Activity間的通訊要複雜得多。通訊行為被封裝在一個叫做intent的類中。這種通訊機制讓我想起了當年Windows統治地球的時候,和利用CORBA訪問分布式對象的方法很類似。

Activities和Fragments和Activity類似的一種概念)在螢幕上組織的方式也與iOS很不一樣,對於一個新手,你會發現根本沒有類似UINavgationControler的東西,整個系統已經是一個Activity的棧結構。

來學Android把,騷年,這裡有餅乾!
Android Studio, Big Nerd Ranch的書還有餅乾。

不過最驚奇的是Android的文法比iOS要囉嗦不少。尤其當一個iOS開發人員跟你說這東西很囉嗦,你最好把這當回事!一個最要的原因是 Android SDK沒有將一些行為抽象出來,比如你在iOS建立一個UIViewController時,你不用去給它指定xib檔案的名字,除非你在做什麼詭異的操 作。否則UIViewController會自己去尋找和自己同名的xib檔案,在Android中,你只有手動去指定每一個布局檔案,一遍又一遍。

從這裡你可以看出你可以把你在一個平台中學到的東西帶到另一個平台之中。iOS開發人員也可以從Android的布局技巧中有所收穫,用來彌補Cocoa中AutoLayout的不足。

作為一個iOS開發人員最讓我想念的就是一門不將就的語言對不起,情不自禁),還有blocks,Core Data。

兩者兼備

學習Android的過程讓我成為了一個更好的iOS開發人員,也讓我有機會以一個全新的視角來審視移動開發。瞭解兩個平台的技術讓我成為了一個更好的移動開發人員。

無路可退:我是一個有證的Android開發人員了。

如果你是一位業餘開發人員,你可以選擇忽略其中一種平台,但是作為一名職業開發人員,無論對於你的職業生涯還是公司的商業角度掌握兩個平台的技術都具有重要意義,不管你是不是偏愛其中的一方。

因此,如果你是一個iOS開發人員,你可以繼續開關於Android的玩笑,但是你還是應該去學習它。如果你是一個Android開發人員,來加入我們體驗一下另一種世界:我們保證不會嘲笑你們誇張的“電話板”的。我保證。

你知道為什麼Android平板的市場佔有率不重要麼,應為他們都算是手機!…

譯文連結: http://blog.jobbole.com/68744/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.