20169207 2016-2017-2 《移動平臺應用開發實踐》第十一週做業

近期任務:最近幾天以項目環境搭建,程序基本需求分析和程序數據設計階段,除了必要的知識儲備外,咱們還須要瞭解一些andrid 的其餘知識。

Android是什麼?
Android是一個面向移動設備的軟件堆層( software stack),包含了一個操做系統,中間件和關鍵的應用程序。 Android SDK提供了必要的工具和API,你能夠在這些的基礎上使用java編程語言開發 Android平臺上的應用程序。
特性
應用程序框架 支持組件的複用和更換
Dalvik虛擬機 專門爲移動設備進行過優化
集成的瀏覽器 基於開源的 WebKit 引擎
優化的圖形機制 自定義的2D圖形庫,基於OpenGLES 1.0 規範的3D圖形實現(本項硬件加速器可選SQLite 輕量級的數據庫,支持結構化數據的存儲媒體支持 面向常見的音頻、視頻以及靜態圖形檔案格式 (MPEG4H.264,MP3,AAC,AMR,JPG,PNG,GIF)
GSM 技術 (依賴硬件支持 )
Bluetooth , EDGE , 3G,和 WiFi (依賴硬件支持 )
Camera, GPS, compass,和 accelerometer (依賴硬件支持 )
豐富的開發環境包含一套硬件仿真器,一些用於程序調試、內存和性能剖析的工具,以及支持Eclipse集成開發環境的插件(ADT)。
Android 框架
應用
Android 將預裝一組核心應用程序,包括 email 客戶端、短信服務、日曆日程、地圖服務、瀏覽器、聯繫人和其餘應用程序。全部應用程序都是 Java編程語言編寫的。
應用框架
經過提供一個開放的開發平臺,開發者使用 Android 能夠開發出極爲豐富且新穎的應用程序。開發者能夠自由地利用設備硬件優點、訪問位置信息、運行後臺服務、設置鬧鐘、向狀態欄添加通知等等。
開發者擁有對核心應用程序所使用的相同框架 API 的徹底訪問權力。應用程序框架的設計
旨在簡化組件的複用;全部應用程序均可以發佈其能力。任何應用程序均可以發佈本身的功能,而後其餘任何應用程序均可以使用這些功能 (須要符合框架強制要求的安全約束 )。這一相同的機制容許用戶替換組件。
全部應用都是一組系統和服務,通常包含:
一組豐富和可擴展的,能夠用來構建應用程序的 視圖 組件,含有 lists, grids , text
boxes, buttons,甚至內嵌網絡瀏覽器
Content Providers (內容提供器) 使一個應用程序能夠訪問另一個應用程序的數據 (如聯繫人),或者應用程序內部共享自有數據
Resource Manager (資源管理器),提供對本地化字符串、圖形和佈局文件等非代碼資源的訪問通道
Notification Manager (通知管理器),使全部的應用程序在狀態欄顯示自定義的警告
通知
Activity Manager (活動管理器)負責管理應用程序的生命週期,提供通用導航回退

Android 包含一組各類各樣的 Android 系統組件都在使用的 C/C++ 庫。這些功能經過 Android應用程序框架提供給開發者。下面列舉一些核心庫:
系統 C 庫—— 基於 BSD 的標準 C 系統庫(libc )實現,移植到了 Linux 嵌入式設備上
媒體庫 —— 基於 PacketVideo 的 OpenCORE;媒體庫支持不少流行音頻和視頻格式、靜
態圖形文件(包括 MPEG4, H。 264, MP3, AAC , AMR , JPG 和 PNG)的播放和錄製
表面管理器 —— 管理對顯示子系統訪問,無縫組合多個應用程序的二維和三維圖形層
LibWebCore —— 是流行的瀏覽器引擎,能夠支持 Android 瀏覽器和嵌入式的網頁視圖
SGL—— 底層的 2D 圖形引擎
3D 庫—— 基於 OpenGL ES 1.0 API 的實現;該類庫使用硬件 3D 加速器(有相應硬件時)或者內置的、高度優化的 3D 軟件加速機制。
FreeType—— 支持位圖和矢量字體渲染
SQLite—— 面向全部應用的,強大且輕量級的關係型數據庫引擎java

Android 運行時刻 (Android Runtime)
Android 的核心類庫提供 Java類庫所提供的絕大部分功能。每一個Android應用程序都經過Dalvik虛擬機在本身的進程中運行。Dalvik 被設計來使一臺設備有效地運行多個虛擬機。 Dalvik 虛擬機執行的是 Dalvik 格式的可執行文件(.dex) ——
該格式通過優化,以下降內存耗用到最低。虛擬機是基於寄存器,運行 Java 編譯器編譯的類,這些類經過 Android 內置的 「dx工具編譯成了。 」 dex 格式。
在一些底層功能,好比線程和低內存管理方面, Dalvik 虛擬機是依賴 Linux 內核的。
Android 應用程序基礎
Android 應用程序是用 java 語言寫的,經過 aapt 工具把編譯好的 java 代碼和應用程序所須要的全部數據、資源文件打包成 Android 包,即後綴爲 .apk 的壓縮文件,這個文件是發佈應用程序和在移動設備上安裝應用程序的媒介,是用戶下載到他們設備上的文件。一個 .apk文件中的全部代碼同屬於一個應用程序。從不少方面來講,每一個 android 應用程序都運行在本身的空間裏:默認每一個應用程序在本身的 Linux 進程中運行,當應用程序中的任何代碼須要執行時android 就啓動一個的進程,當再也不須要或系統資源被其餘應用程序請求時 android 就關閉這個進程。每一個進程都有其專屬的 Java 虛擬機(VM ) ,因此應用程序代碼運行時與其餘的應用程序是彼此隔離的。默認的,每一個應用被賦予一個惟一的 Linux 用戶 ID,因爲權限設置的緣由,一個應用程序的文件只有本用戶 (應用程序自己) 可見 —— 固然,也有把他們導出給其餘應用程
序的機制。能夠爲兩個應用程序安排使用同一個用戶 ID ,這種狀況下他們彼此之間是能夠看見對方的文件。爲了節約系統資源,擁有相同 ID 的應用也能被安排運行在一個相同的 Linux 進程中,共享同一個虛擬機。
應用程序組件 (Application Components)
Android 一個核心特色就是一個應用程序能使用另外一個應用程序的元素(在提供元素的
應用程序容許的狀況下) 。例如,若是你的應用程序想要顯示一個滑動圖片列表,另外一個應
用程序正巧開發了合適的滑動模塊,而且贊成共享,你就能夠調用那個滑屏模塊處理這些
圖片並顯示出來,而不是本身再去開發一個。你的應用程序並無包含或連接了提供元素
的應用程序的代碼,只是在須要的時候啓動使用其餘程序的部分功能。
爲了實現這樣的過程,系統必須在應用程序的任何部分被請求時啓動這個程序的進程,
實例化那部分 Java 對象。所以,和其餘大多數系統不一樣的是, android 應用程序沒有一個單
獨的程序入口 (例如:沒有 main 函數) 。 而是包含運行所需的必要組件, 使得系統能夠實例
化對象。 android 中有四種組件:
活動 ( Activity)
一個 Activity 表示用戶可視化界面,用戶能夠在上面進行一些操做。例如,活動會顯示一個用戶可選的菜單項的列表,或是顯示帶有標題的圖片。一個文本信息應用程序可能有一個活動來顯示將要發送信息的聯繫人對象,一個活動用於顯示撰寫信息文本給選定的聯繫人,其它的活動用於查看舊的消息或者顯示設置的界面。雖然它們做爲一個總體的用戶界面進行協同工做,可是每個活動都是相對獨立的。每個活動都是活動基類(類 Activity )的一個子類實現。
一個 Android 應用可能由一個活動組成,或者像上面提到的文本信息應用程序同樣包含了多個活動。活動是什麼樣的以及須要多少的活動,這些取決於你的應用程序是如何設計的。最典型的是將一個活動被標記爲第一個,當應用被加載時顯示給用戶。從
一個活動轉到另外一個活動是經過在當前活動來運行下一個活動實現的。每一個活動提供了一個用於繪製的默認窗口。一般窗口將佔滿整個屏幕,可是也有可能比屏幕小而且浮在另外一個窗口的上面。一個活動可使用多個窗口——例如,在活動中央顯示一個須要用戶迴應的彈出對話框,或者當用戶選擇屏幕上一個特定項目時爲用戶顯示一些重要信息的窗口。窗口中的可見的內容是由一組繼承自 View 基類的 view 組成的層次體系。每一個 view 控制窗口中一塊特定的矩形區域,父 view 包含並組織子 view 的佈局。葉 view (層次底端的 view)繪製它們管理的矩形,而且負責響應用戶在此區域的操做,所以 view 就是活動和用戶交互的地方。例如,一個 view 顯示一個小圖片,當用戶點擊這個圖片後開始一個操做。 Android 有不少已經作好view 你能夠選擇使用,包括按鈕,文本輸入框,滾動條,菜單項,多選列表等等。經過使用 Activity.setContentView() 方法將一組 view 層放置到一個活動窗口中, contentview 是 view 層中最頂端的那個 view。(參見 User Interface 的文檔獲取更多有關 view和層次的信息。)
服務 (Services)
服務沒有可見的用戶界面,可是能夠在後臺運行任意長的時間。例如,一個服務能夠在用戶轉向其餘工做後仍然在後臺播放音樂,或者從網上下載數據,或者計算一些東西而後在須要的時候提供給活動。每一個服務都繼承自 Service 基類。一個主要的例子就是從列表中播放音樂的媒體播放器。播放器程序可能會有一個或幾個活動,這些活動可讓用戶選擇但願播放的音樂而後顯示播放。可是音樂播放過程自己不會使用一個活動,由於用戶但願在切出播放器界面作別的事情時音樂也能一直放下去。爲了保持播放繼續,播放器的活動能夠啓動一個在後臺運行的服務。而後即便啓動這個服務的活動退出,音樂播放服務也能繼續運行。
你能夠鏈接( connect)或者綁定( bind)到一個正在運行的服務(若是這個服務還沒運行的話就啓動它) 。當鏈接到服務後,你能夠經過服務暴露出來的接口和這個服務進行通訊,對音樂播放服務來講,這個接口可能容許用戶暫停,後退,中止,從新播放等操做。像活動和其餘組件同樣,服務運行在這個應用程序進程的主線程中。 所以爲了避免阻塞其餘的組件或者用戶界面,服務常常爲那些耗時長的任務單獨開一個線程 (好比音樂播放 )。
廣播接收器 (Broadcast receivers)
廣播接收器只是接收廣播並對廣播信息作出做出反應,多數的廣播是由系統代碼發出的—— -好比反應時區變化的通知,電量低的通知,照了一張照片的通知,或者用戶修改了系統語言的通知。應用程序也能夠本身定義廣播,好比定義這樣一個廣播,讓其餘的應用程序知道某些數據已經下載完畢了可使用了。應用程序能夠有任意數量的廣播接收器來對他所關心的廣播進行監聽並做出反應。全部的廣播接收器都繼承自 BroadcastReceiver 基類。廣播接收器不顯示在用戶界面上,可是能夠啓動一個活動來對接收到的信息進行響應,或者可使用 BroadcastReceiver 來警告用戶。 Notifications( 通知 )能夠經過不一樣的方式引發用戶的注意,好比使背景燈閃爍,使設備振動,播放聲音等等。一般是在狀態欄上顯示一個不會消失的圖標,用戶能夠打開這個圖標查看通知。
內容提供者 (Content providers)
內容提供者使程序中特定的數據能夠被其餘程序使用。這些數據能夠存儲在文件系統中,SQLite 數據庫中,或者任何其餘能夠存數據的地方。內容提供者繼承自 ContentProvider基類,實現了一系列的使其餘程序獲取和存儲其支持的數據格式的方法,可是應用程序不直接調用這些方法。而是使用一個 ContentResolver 對象,而後調用這個對象的方法。ContentResolver 能夠和任何的內容提供者交流,它和提供者協做來管理全部涉及到的進程間的通訊。獲取更多使用內容提供者的詳細信息請參見另外一篇文檔—— Content Providers 。不管什麼時候請求都應該由一個特定的組件來處理, Android 將確認組件的應用程序進程是否處於運行狀態,並在須要的時候啓動它,以及組件的一個特定實例是否可得,並在須要的時
候生成該實例.android

相關文章
相關標籤/搜索