Android是什麼,中的Parcel是什麼 軟體開發需要學什麼 IOS為什麼比android….

NO IMAGE

什麼是Android?

  Android一詞的本義指“機器人”,同時也是Google於2007年11月5日宣佈的基於Linux平臺的開源手機作業系統的名稱,該平臺由作業系統、中介軟體、使用者介面和應用軟體組成,號稱是首個為移動終端打造的真正開放和完整的移動軟體。

Android發展概況?

  Android自發布以來就受到了許多大廠的鼎力支援,如摩托羅拉、HTC、三星、LG等手機大廠都紛紛推出了自家旗下的 Android手機。而發展至今,Android共經歷了Android 1.1;Android 1.5;Android 1.6;Android 2.0/2.1 ;Android 2.2;Android3.0這幾個主要版本。

Android平臺手機的優勢?

  一、開放性

  在優勢方面,Android平臺首先就是其開發性,開發的平臺允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發者,隨著使用者和應用的日益豐富,一個嶄新的平臺也將很快走向成熟。

  開發性對於Android的發展而言,有利於積累人氣,這裡的人氣包括消費者和廠商,而對於消費者來講,隨大的受益正是豐富的軟體資源。開放的平臺也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀的手機。

  二、掙脫運營商的束縛

  在過去很長的一段時間,特別是在歐美地區,手機應用往往受到運營商制約,使用什麼功能接入什麼網路,幾乎都受到運營商的控制。自從iPhone上市, 使用者可以更加方便地連線網路,運營商的制約減少。隨著EDGE、HSDPA這些2G至3G行動網路的逐步過渡和提升,手機隨意接入網路已不是運營商口中的 笑談,當你可以通過手機IM軟體方便地進行即時聊天時,再回想不久前天價的彩信和圖鈴下載業務,是不是像噩夢一樣?

  網際網路巨頭Google推動的Android終端天生就有網路特色,將讓使用者離網際網路更近。

  三、豐富的硬體選擇

  這一點還是與Android平臺的開放性相關,由於Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產品。功能上的差異和特 色,卻不會影響到資料同步、甚至軟體的相容。好比你從諾基亞Symbian風格手機一下改用蘋果iPhone,同時還可將Symbian中優秀的軟體帶到 iPhone上使用、聯絡人等資料更是可以方便地轉移,是不是非常方便呢?

  四、不受任何限制的開發商

  Android平臺提供給第三方開發商一個十分寬泛、自由的環境。因此不會受到各種條條框框的阻擾,可想而知,會有多少新穎別緻的軟體會誕生。但也有其兩面性,血腥、暴力、情色方面的程式和遊戲如可控制正是留給Android難題之一。

  五、無縫結合的Google應用

  如今叱詫網際網路的Google已經走過10年度歷史。從搜尋巨人到全面的網際網路滲透,Google服務如地圖、郵件、搜尋等已經成為連線使用者和網際網路的重要紐帶,而Android平臺手機將無縫結合這些優秀的Google服務。

Android的開發技術很多,在開始學習的時候不可能一次性全部學會,也沒有必要一開始都全部學會,但是有些技術是非常常用的,需要在開始時打好基礎,這些技術時:

1、Activity生命週期

雖然Android中有四大元件,但是不可否認Activity是最常用的。所以熟練掌握Android的生命週期是必須的。其實生命週期就是記住 Activity的那些方法在什麼時候被系統呼叫,這樣才可以把對應的邏輯程式碼寫到合適的方法內部去。

至於服務和廣播元件可以稍微緩一下,到實際使用的時候再學習都可以。

2、介面開發技術 

介面開發是一種基本的技術,幾乎所有的程式裡面都需要用到。在Android開發中介面開發分為3種:   1)使用xml檔案佈局 

  使用xml首先對於介面進行佈局,然後在Activity裡面進行引用是最常見的應用軟體開發技術,這種方式使用的最大,需要學習的內容也最多。學習時需要熟悉: 

  a)五種Layout佈局 

  深刻理解五種佈局組織控制元件的方式是一個基本的基礎,這樣你才可以在實際的介面中靈活的使用每種佈局結構,構造出需要的介面。 

  b)常用控制元件 

  控制元件有很多,至少要知道每種控制元件是做什麼的,至於裡面的特定引數和方法可以學要的時候再去查   

c)介面美化 

  系統的控制元件很多時候無法滿足要求,需要通過新增背景更換圖片等進行美化,要熟悉每種控制元件如何去美化。

掌握了上面的內容,通過佈局的巢狀就可以製作出各種介面,如果在熟悉include的使用就可以減少xml的重複,方便後期的修改和維護了。

2)使用程式碼動態建立

有些時候需要動態的建立一些佈局和控制元件,這個就需要使用LayoutInflater去建立一些動態的介面了。

3)自己繪製介面

遊戲中常用,繼承SurfaceView自己繪製。

3、資料儲存技術

Android中的資料儲存方式有3種:

1)SharedPrefereneces儲存 

  對於簡單的資料可以使用該方式儲存,以鍵值對的方式儲存一些基本的資料。 

  2)檔案儲存 

  將資料以檔案的形式儲存,可以是手機自身的儲存也可以是SD卡,檔案的資料格式自己定義。   3)SQLite資料庫儲存 

  使用標準SQL語句進行操作,複雜資料的首選。   4、網路程式設計 

  現在的Android程式不需要聯網的已經不多了。所以網路程式設計也是必須的,一般的公司都會封裝有自己的聯網結構,但是基本的聯網還是要熟悉。   1)HTTP聯網 

  使用Http聯網 Json資料格式是現在很多客戶端的首選。   2)Socket聯網 

  至於藍芽等連線方式則可以在專案需要的時候學習。 

  對於手機的系統功能,如撥打電話、傳送簡訊、讀取系統引數等則可以根據需要在學習,不麻煩的。

其次,手機軟體相關 

  Android開發不同於普通的電腦軟體開發,需要了解手機的操作習慣,知道手機的螢幕不大、記憶體有限,電池有限等,在實際開發和設計時儘量考慮。

如果要在程序之間傳遞一個整數,很簡單,直接傳就是行了;如果要傳一個字串,就稍微複雜了點:需先分配一塊可以容納字串的記憶體,然後將字串複製到記憶體中,再傳遞(新手可能問:為啥不直接把字串的引用傳過去呢?學過C/C 的地球人都知道:程序有自己的記憶體地址空間,一個程序中的1000地址可能在另一個程序中是100000,java物件的引用跟本上還是記憶體地址);再如果要傳遞一個類的例項呢?也是先為類分配記憶體,然後複製一份再傳遞可以嗎?我認為不可以,我至少可以找到一個理由:類中成員除了屬性還有方法,即使屬效能完整傳過去,但還有方法呢?方法是獨立於類物件存在的,所以到另一個程序中再引用同一個方法就要出錯了,還是因為獨立地址空間的原因。

    Android開發中,很經常在各activity之間傳遞資料,而跟據Android的設計架構,即使同一個程式中的Activity都不一定執行在同一個程序中,所以處理資料傳遞時你不能老假設兩個activity都執行於同一程序,那麼只能按程序間傳遞資料來處理,使之具有最廣泛的適應性。

那麼到底如何在程序之間傳遞類物件呢?簡單來說可以這樣做:在程序A中把類中的非預設值的屬性和類的唯一標誌打成包(這就叫序列化),把這個包傳遞到程序B,程序B接收到包後,跟據類的唯一標誌把類建立出來,然後把傳來的屬性更新到類物件中,這樣程序A和程序B中就包含了兩個完全一樣的類物件。

1、iOS開發比Android開更容易賺錢

1.1 Appstore上的應用和遊戲比Android play store質量高

         現在Android Market變更為Android play store,App Store大概已經超過60萬應用了,Android play store大約30萬,App store的應用和遊戲都是通過嚴格稽核的,大多是收費的應用遊戲。Android裡面的色情、桌布和鈴音等垃圾應用數量也是很龐大,如果去除這些,Android Market的應用數量和質量會更縮水。當然在這麼大的數目下,數量已經不是競爭關鍵,應用質量才是真正的關鍵。

          Android應用商店魚目混雜,混戰、雜亂、參差不齊,這是對國內安卓第三方應用商店現狀的慣用表述語,部分商店根本沒有對應用的稽核,應用的安全性如何保證?這讓消費者如何選擇!?

1.2 iOS系統大部分通過收費應用道具賺錢,Android play store的大部分應用通過廣告賺錢 。

        很顯然,iOS的封閉有助於遊戲應用版權的保護,很多做Appstore的遊戲的廠商都日進斗金,iOS使用者所花的錢遠超Android使用者,這事其實有很多原因。這樣的差距,事實上已經表現在開發者對兩家平臺的態度上,Google被公認的廣告網際網路公司,Android系統也是為力助google的廣告業務。iOS理所當然的成為了開發者心目當中的首選平臺,因為它之上的使用者更願意購買應用。

 

          在國內,Apple公司開通了人民幣支付通道,這使得天朝人民也能夠很簡單的購買Appstore裡的遊戲和應用了。這從我身邊有Iphone,Ipad的同事朋友都能察覺到,現在他們已經不屑於越獄iOS系統,願意購買遊戲。我的一位收入普通的同事,在買了Iphone之後,兩個月內花了400多人民幣購買應用和遊戲,另外買了Ipad的同事也沒有越獄,購買了正版的遊戲,是Appstore培養了國人買軟體的習慣。開發者更願意用實力來贏取金錢而不是廣告。而Android很多相應的應用,要麼免費加廣告的形式(比如憤怒的小鳥)

 

          相對來說,Android容易被盜版,把Android的 apk解壓,隨便換掉些圖片,然後加上廣告,這個遊戲應用就被盜版了,很多大型遊戲廠商,都是擔心盜版問題,所以不敢在Android系統上花太多的精力。

 

2、iOS開發比Android簡單便利

有這麼一個段子:兩個創業團隊各拿到了100萬投資.甲團隊是iOS平臺遊戲開發.乙團隊是Android平臺遊戲開發.一個月後乙團隊宣佈解散.眾人驚!!問其何故?答曰;我也不知道為什麼.就在買第999部Android測試手機的時候.我發現我們沒錢了。(雖然比較誇張,但這也體現了開發Android的悲催之處。)

          很多人以為iOS開發比Android難,因為Andriod的應用層是java開發的,應用層開發比較簡單。這個觀點我不太認可,雖然應用層是java開發的,想要開發一款好的遊戲應用,需要了解深層學習的東西太多了,Android上沒有現成的好看的UI控制元件和機制,很多控制元件和效果都需要自己自定義實現,這就大大加大了開發Android的難度,而IOS上大部分現成的UI控制元件和機制就能完成一款不錯的應用了。更不需要考慮Android上的幾百種機型的適配。我是親身經歷,除了要考慮這些機型的適配,還要防住國內運營商對Android手機的各種功能的閹割,比如不能帶 google  地圖,基站定位等等。不適配這些機型老闆又不樂意。

 

            事實上這個世界上大部分正經遊戲都是用C 開發的,而Objective-C與C 天生 一家的特性吸引了太多遊戲開發者(你可以直接用C 給iOS開發遊戲)

Mac OS上的Xcode整合開發環境更是開發iOS的神器。iOS 5支援storyboard的開發,使得開發iOS系統的介面更容易。

 

3、iOS開發比Android開發工資更高

  我這裡說的是大部分的程式設計師,當然少數的Android開發人員的工資會比IOS開發的工資高。

造成這樣的原因總結有兩點:

3.1 iOS開發的人才比較少

    經過2011到現在Android招聘的瘋狂,現在Android的程式設計師漸漸多起來了不再是物以稀為貴了,很多原來Java的程式設計師很輕鬆的就轉向了Android的開發,使得android人才很快得到滿足,但是iOS開發呢? iOS開發成本比較高,首先需要一臺Mac電腦,如果需要真機除錯,還得買Iphone或者iTouch,還得每年99$的錢給Apple公司。對於一個在校大學生,或者剛畢業參加工作的程式設計師來說,他們會更傾向與學習Android,因為用來開發的電腦和手機可能都是現成的,不需要增加任何成本。 

就這麼一個門檻,就能把很多人攔在了iOS開發的門外了。這樣就造成了iOS開發人才物以稀為貴了。

3.2 認為Objective-C開發比較高階

   是的,大部分人都誤以為Objective-C開發比java難,真正用到Objective-C熟練之後,你會發現,Objective-C其實不比java難。

如有什麼建議和疑問,歡迎留言討論。

歡迎大家加群技術交流1群:367685933

                                   2群:670120170