Android應用程序開發——安卓應用開發介紹

這是網易公開課 密西西比河谷州立大學:Android應用程序開發 的筆記。

視頻地址:http://v.163.com/special/opencourse/developingandroidapplications.html


這個課程有六節課。課程目標是在這六節課後讓學習者對android平臺有一個比較好的瞭解,兼作複習。


概述


android是一個爲移動設備準備的軟件棧,它包括一個Linux操作系統和一些中間件,還附帶一些關鍵性的應用,比如聯繫人管理、地圖應用、瀏覽器等等。

安卓由谷歌開發和維護,它是一個開源項目。


下面的這張圖描述了安卓平臺的結構。



安卓結構可分爲4層,應用層:預裝一些應用,比如聯繫人管理。開發者可以在這層開發自己的應用。第二層是android框架層,提供開發這一些應用接口,其中有一系列不同的子框架,如處理窗口,處理電話事件的框架等。


框架本身是在一系列庫之上寫出來的。也就是綠色這層,庫內容由C和C++編寫,這些庫是自帶的。有一些由谷歌實現,一些是開源集成項目。如SQLite和WebKit等。


安卓運行時則是基於Dalvik虛擬機。由谷歌實現。


所有這些都建於Linux內核之上。


你開發的應用和系統自帶的應用都是基於應用框架,沒有本質差別。也就是說谷歌安卓的API都是公開的。


Dalvik虛擬機介紹:

移動設備的計算和存儲資源有限,於是谷歌開發了專門的虛擬機。


Dalvik是基於寄存器的虛擬機而不是基於堆棧機器。總體而言,它將提供更高效的指令流。

每條指令上所得到的語義內容將會更多。


一個for循環由Dalvik轉爲彙編語言後的代碼行數要顯著少於一般的Java虛擬機的數量。


實際的結構塊和基本的安卓概念


活動(Activity):代表用戶正在做某事,這通常呈現在同一屏幕上,但在屏幕上可以有多個視圖。


視圖:視圖View是安卓的GUI基類。用來在區域內描繪矩形,以及對屏幕區域發生的事件做出響應。它是圖形化及交互的基本抽象。


建立新活動則通過擴展Activity類實現。


從Activity中派生新類。


服務(service):service是沒有用戶界面的應用或應用組件,它在後臺運行。使用時同Activity。比如播放器例子。


廣播接收器(Broadcast receiver):Broadcast receiver 接收廣播並做出反應。它也沒有用戶界面,但能調用有用戶界面的活動。


內容提供器(Content Provider):content provider是用來管理應用程序數據的。它可以讓一個應用的數據用於設備上的其他應用,也可用於該應用本身,即我們能使用內容提供器訪問其數據。


數據一般存於SQLite數據庫中。安卓還支持文件系統的概念。它擁有一些鍵值對所組成的首選項。


也就是說,本地數據存儲有幾種不同的方式。

如聯繫人應用的聯繫人數據庫。

以上是安卓應用中的四大構建塊。


每個安卓進程都以單獨的Linux進程運行。

每個應用安裝後都具有唯一用戶ID。

從用戶界面來看,安卓會管理所謂的“活動棧”。這些活動將形成活動棧,安卓系統會管理所有的細節問題。


下圖是安卓活動的生命週期圖:




在活動基類中存在鉤子函數,在狀態轉換時,由底層框架調用,如onCreate() hook function。


當應用不在前臺,但佔用大量資源時,系統會終止進程。

當內存空間很低時,安卓系統會選擇性地停止那些不在前臺,但佔用內存的應用。當用戶再次回到該應用時,需要重新onCreate,所以在停止時需要存儲應用狀態。


程序如何從一個活動轉移到另一個活動。在安卓中用intent來處理。

intent是一個活動傳給另一個的異步信息。一般的intent包含有兩段數據,首先是動作信息,然後是該動作所需數據的實際URL。在安卓中還分爲顯性意圖和隱性意圖。在顯性意圖中,活動中明確了另一個活動是什麼,可以在意圖中硬編碼,明確想轉到的活動是什麼。


但更一般的方式是隱性意圖。只說明要做的動作和所需數據。在編寫活動時會編寫意圖過濾器(intent filter),聲明哪個活動能夠運行相應的意圖,然後系統會將控制轉給此活動。比如用瀏覽器瀏覽網頁。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章