Android 系統的設計理念先進在哪裡?

關於 Android 的問題中很多人都提到 Android 的設計理念先進,甚至有人說它的設計理念是超前的,然而做為用戶,我想知道它先進和超前在哪些方面呢?


從三個關鍵的Android部件說起(另外一個是Activity)。

  • Intent
  • Broadcast Receiver

  • Content Provider

1.Intent

Intent 在Android系統中Intent可謂無外不在。要啟動一個Activity需要用Intent,要啟動服務需要用Intent,發送Broadcast需要用Intent。其中最體現設計的精妙之處的就在於Intent可以用字元串來添加Intent Filter過濾器,這樣可以將各個應用高度解耦。舉個粟子,當一個app需要打電話時,它不需要自己去調用系統打電話的API,而只需要用一個指向Android系統撥號器的Intent就可以了。

2.Broadcast Receiver

不知道Android的設計者有沒有看過森欣司先生的自律分散系統理論,Broadcast Receiver的設計讓我自然地聯想到了自律分散系統中「廣播」的概念。App的各個子節點各司其職,唯一的通信方法就是通過廣播,每個節點註冊自己想接收的Action,由系統來維護這個註冊列表,讓每個節點都能獲得想要的數據,對於子節點而言,這就實現了數據驅動,又是高度解耦的利器。

3.Content Provider

將後台數據(可以是資料庫,也可以不是)進行統一的介面封裝,讓應用讀寫數據更加方便高效。


1、Handler

2、content provider

3、跨進程通信


其實Android的程序設計不是超前的甚至是存在局限的,所以它在不斷的迭代和改進

如果說設計理念超前的地方,就是希望能在任意的設備上運行並有統一的體驗

這些設備可以有不同的處理器和存儲器,不同的顯示尺寸和像素密度,不同的硬體擴展

這個理念先進的地方就是誕生了iPhone6和iPhone6 Plus 23333

這個理念超前的地方就是完美實現它,硬體水平、軟體架構、交互設計、開發者工具和開發者素質,缺一不可


用過安卓機,日常也使用linux辦公。感覺安卓有一點巨大的不同,它對app訪問系統許可權的控制,似乎比一般linux要嚴格得多。


Android整體系統的設計比較中庸,其中亮點的不多,問題比較多,特別是各個模塊之間的耦合度高造成很多問題。進程間通信機制binder這些,說實話設計的真的比較一般,穩定性和性能都不夠好。之所以流行主要是因為其推出的時機和免費運營方式(當然還是有專利等問題),而且對吸引開發者花了不少功夫


我覺得很多答主說的都很好,但有些太細節了,而且有些也算不上超前和優勢。比如Handler的概念,Meego中有類似Qt的信號/槽框架,在某些方面我認為比Handler還要合理和方便。

我認為Android最大的魄力和超前,就是放了一個通用內核,並開放了許可權。想想當年硬體不行的時候,Android被iOS的流暢性虐成渣;但沒過幾年,硬體一跟上,Android的多任務和真後台機制,立馬把iOS虐成了渣,比如桌面的widget,進程間通信,streaming等等。想想當年的iOS dropbox app,要靠GPS來騙後台執行許可權,這不可笑么?

雖然Android的多任務也帶來了問題,比如流暢性和待機時間。但大部分這些問題是不合格的App造成的,並不能說是Android的缺陷。我認為等Android的生態環境逐漸穩定,開發者優勝劣汰,比如現在的北美,Android的超前理念才會體現出來。


它是基於組件的,上層結構的控制中樞是「系統核心進程」。

在這裡,「應用」這個概念被弱化了,利用intent+四大組件可以很方便的跨應用、跨進程。

一個不大貼切的比喻是搭積木。組件就是一個個積木,積木之間怎麼結合,積木該怎麼擺放都由「系統核心進程」去控制。

同時,界面描述採用了XML文件,可以很好的實現界面和邏輯分離。


APP之間的通信

例如

需要微博授權的APP可以直接調用weibo客戶端登錄,免除再次輸入,同樣的還有百度系列,騰訊的帳號通

當你想翻譯時,只需要複製一段英文,使用分享到Google翻譯,就能獲得結果


1 基於linux內核的多任務

2 通知系統

3 java開發環境

個人感覺這是安卓最大的優勢和亮點


全局廣播和Tasks


開放性,易於大家參與折騰。始終跟著節奏在走。


基於CS結構的IPC很有意思。


對比WM和SB系統 iOS和安卓的設計理念都是次世代的,為手指優化的操作方式比以前的案件或者觸控筆方便了一萬倍(當然,輸入文字除外)

更關鍵的是,安卓是一個開放的系統,隨意折騰


寫ios的應用程序 你寫的是一個應用程序.

寫Android的時候 你寫的是Android四大組件的一個集合.各個組件之間的關係非常弱


1.選擇Java 作為開發語言,可移植性杠杠的,同時預判到了內存和CPU 技術的迅速發展。

2.做了很好的硬體抽象,易於適配硬體。

3.其他沒啥牛的,選Java 是最大的成功


快速佔領了大部分移動互聯網的入口。

當我第一次接觸安卓手機,我才知道,原來打電話可以只是手機的一個軟體而已。

這大大顛覆了我之前對手機的認識。

當互聯網和移動終端的相互依賴性越來越大,

雲和端的之間的完美結合,這時候,我們會發現我們頭頂一朵巨大的雲——谷歌。

移動終端,必然是互聯網的未來。


推薦閱讀:

同樣使用 Chromium 內核的瀏覽器,採用單進程和多進程方式各有何利弊?
為什麼google protobuf不支持map的序列化和反序列化?
如何在谷歌上使用通配符?
新版 Google Reader 的界面設計怎麼樣?
Google 的 Android 部門怎麼盈利?這個部門有什麼直接的商業收入?

TAG:Linux | 谷歌Google | Android |