2011年3月27日 星期日

Android 的程式基礎(一)

看了部分官網的說明,在這裡寫寫筆記,複習、也加深自己的印象。 使用者清單


Android 是一個以 Linux Kernel 2.6 為基底的作業系統,由 Kernel 、函數庫、 Runtime、 框架以及應用程式所組成。一般軟體程式的寫作人員所開發的,就是應用程式層。了解其底下各層所負責的項目和協作方式,對於程式的了解有很大的幫助(個人一直這麼認為)。

由於是以 Linux Kernel 所發展,所以許多函數庫是以 C 或 C++ 寫成。不過中間經過框架和Runtime,實際上撰寫應用程式時,是以 Java 程式進行。由其它地方看到的訊息,那是一個由 Java 分支於 Apache 的專案衍生出來的,不過由於授權模式並不是很清楚,就演變成之前買下 Sun 的甲骨文公司告 Google 侵權的狀況。

除了部分 Java 核心的類別之外, Android 也加入了許多自己的函數庫,總體而言帶有很重的 Java 風格。但一些差異點,仍然會讓考過 SCJP 的我,搞不清楚狀況。又從頭開始看起 Google 的官方文章。

和 Java 程式中會有 main 啟始函數不同,在 Android 的應用程式都不算是「獨立」的程式,而是作為被另一支程式所呼叫,所以 Android 應用程式,實際都是繼承於 Activity 類別而來,我個人覺得把它翻譯為「活動」類別比較貼切,而不是其它中文書中叫它「機動程式」,一整個很彆扭,讓我一開始一直陷入「它到底哪裡『激動』了」的問題。

Java 程式語言是一個多執行緒的語言,在 Android 也承習了這個概念,當一支程式將被啟動, Android 就建立一個新的執行緒,並且啟動對應的程式。這個時候繼承於 Activity 的效果就出現了,啟動器只知道啟動了一個 Activity 類別,並不在意實際被執行的是哪一個子類別,只要利用父類別(Activity)提供的方法,就可以控制程式的啟動、暫停、終止…等。一個程式設計原則「對父類別撰寫程式」被應用的實例。

在 Android 平台中所不同的地方,在於程式並不單只是不同執行緒,而且在運作的過程中,也配給不同的 User ID,這是利用 Linux 作業系統多用戶的特性。利用 Linux 檔案權限的控管,加上不同應用程式帶有不同 User ID,就可以保護不同的程式彼此之間不會互相干擾,修改到其它程式的檔案,也能夠保護重要的系統資源不被破壞。

在某個特殊的狀況下(還沒看到是什麼狀況),兩支帶有相同驗證資料的應用程式,可以帶有相同的 User ID,待在同一個執行緒中,享受到資源共享的方便。不然就得依照 Android 的規則,開出能夠被其它程式存取的介面,來分享或傳遞資訊。

另外,像是藍牙、Wifi、GPS、SD記憶卡以及通訊錄、電話…等,也是可以被應用程式存取。不過必需要在安裝的時候,提供使用者,取得同意後才能夠進行存取。

沒有留言:

張貼留言