Hello Android 第三版 (二)

來源:互聯網
上載者:User



第二章

架構

 


2.1

架構圖

 

Linux

核心

Android

的核心系統服務依賴於

Linux 2.6

核心,如安全性,記憶體管理,進程管理,

網路通訊協定棧和驅動模型。

Linux

核心也同時作為硬體和軟體棧之間的抽象層。

原生庫(

Native Library

Linux

核心之上的是

Android

的原生庫,這些庫均採用

C

或者

C++

編寫的,與硬體結合非常緊密。其中重要的原生庫主要有:

Surface Manager

:對顯示子系統的管理,類似於

Vista

Compiz

的表單管理器,但是比這些簡單得多。

2D

3G Graphics

:在

Android

中,單一的使用者介面均可由

2D

或者

3D

的元素組成。提供

2D

3D

方面的渲染和處理。比如

OpenGL

等。

Media Codecs

Android

提供了對大部分主流的音視頻的編解碼功能。

SQL

資料庫:在

Android

中,提供了一個輕量級的

SQLite

資料庫引擎,這個資料庫同樣在

FireFox

和蘋果的

iPhone

中使用。主要完成資料的持久化儲存。

Browser engine

:為了更快速的顯示

HTML

內容,

Android

中使用了

WebKit

庫。

系統運行庫

系統運行庫主要由

Dalvik

虛擬機器和

Java

核心庫組成。

應用程式架構

Active Manager(

Activity Manager

):控制應用程式的生命週期並提供常用的導航回退功能。

內容提供器(

Content providers

):使得應用程式可以訪問另一個應用程式的資料

(

如連絡人資料庫

)

或者共用它們自己的資料。

資源管理員(

Resource manager

):提供

非代碼資源的訪問,如本地字串,圖形,和布局檔案。

位置管理器(

Location manager

):任何一部

Android

作業系統的手機均能夠識別所處的位置。

通知管理器(

Notification manager

):使得應用程式可以在狀態列中顯示自訂的提示資訊。

應用程式和

widgets

這是整個系統架構的最高層,主要包括撥打到電話、發送郵件、連絡人管理、

web

瀏覽等等使用者經常使用的應用程式和小工具。

2.2

活動的生命週期及轉換

 

每一個活動(

Activity

)都處於某一個狀態,對於開發人員來說,是無法控制其應用程式處於某一個狀態的,這些均由系統來完成。但是當一個活動的狀態發生改變的時候,開發人員可以通過調用

onXX()

的方法擷取到相關的通知資訊。

在實現

Activity

類的時候,通過覆蓋(

override

)這些方法即可在你需要處理的時候來調用。

onCreate

:當活動第一次啟動的時候,觸發該方法,可以在此時完成活動的初始化工作。

onCreate

方法有一個參數,該參數可以為空白(

null

),也可以是之前調用

onSaveInstanceState

()方法儲存的狀態資訊。

onStart

:該方法的觸發表示所屬活動將被展現給使用者。

onResume

:當一個活動和使用者發生互動的時候,觸發該方法。

onPause

:當一個正在前台啟動並執行活動因為其他的活動需要前台運行而轉入後台啟動並執行時候,觸發該方法。這時候需要將活動的狀態持久化,比如正在編輯的資料庫記錄等。

onStop

:當一個活動不再需要展示給使用者的時候,觸發該方法。如果記憶體緊張,系統會直接結束這個活動,而不會觸發

onStop

方法。

onRestart

:當處於停止狀態的活動需要再次展現給使用者的時候,觸發該方法。

onDestroy

:當活動銷毀的時候,觸發該方法。和

onStop

方法一樣,如果記憶體緊張,系統會直接結束這個活動而不會觸發該方法。

onSaveInstanceState

:系統調用該方法,允許活動儲存之前的狀態,比如說在一串字串中的游標所處的位置等。通常情況下,開發人員不需要重寫覆蓋該方法,在預設的實現中,已經提供了自動儲存活動所涉及到的使用者介面組件的所有狀態資訊。

 

活動如果沒有在前台運行,都將被停止或者

Linux

管理進程為了給新的活動預留足夠的儲存空間而隨時結束這些活動。因此對於開發人員來說,在設計應用程式的時候,必須時刻牢記這一原則。在一些情況下,

onPause

方法或許是活動觸發的最後的方法,因此開發人員需要在這個時候儲存需要儲存的資訊。

 

2.3

組件

Android

系統中,提供了很多重要的組件,其中對於開發人員來說,最重要的主要有活動(

activites

)、意圖(

intents

)、

service

(服務)、內容提供器(

content providers

)。

活動(

activities

活動簡單的說就是一個使用者介面。應用程式可以由多個使用者介面組成,分別對應不同的階段。

意圖(

intents

Intent

是描述某一個操作的機制,比如說擷取一張照片。在

Android

系統中,幾乎所有的工作都通過

Intent

來完成,因此對於開發人員來說,需要經常與

Intent

打交道。

服務(

services

服務是運行在後台,不與使用者直接互動的程式,比如

unix

中的守護進程。比如音樂播放器,使用者希望通過一個活動(

activity

)開始播放音樂,然後可以運行其他的軟體,而不用關閉現正播放的音樂。

內容提供器(

Content
provider

內容提供器是一組封裝了讀寫方法的資料集合。採用這種方式能更好的在不同的應用程式之間共用全域資料。

 

2.4

資源

資源是指本地化的字串、位元影像、或其他的非程式碼的東西。在編譯應用的時候,這些資源將被編譯到應用程式中。

 

2.5

安全性

由於

Android

是基於

Linux

作業系統的,因此其應用程式的運行管理方式與

Linux

一樣,每一個應用程式均運行在自身所屬的

Linux

進程空間裡面。硬體平台禁止進程訪問其他進程的記憶體空間。另外,每一個應用程式都會標註上一個特定的使用者編號,它所建立的任何檔案都不能被其他的應用程式訪問。

另外,訪問臨界操作會受到嚴格的控制,必須在

androidmanifest.xml

檔案中進行申請。安裝應用的時候,包管理器(

package manager

)根據申請進行授權。下面是一些特別重要的許可權:

INTERNET

:訪問互連網。

READ_CONTACTS

:讀取使用者連絡人資料

WRITE_CONTACTS

:寫使用者連絡人資料

RECEIVE_SMS

:監控接收到的文字資訊

ACCESS_COARSE_LOCATION

:調用初級定位器,比如

wifi

ACCESS_FINE_LOCATION

:調用精確定位器,比如

GPS

例如接收簡訊的監控,需要做如下的配置:

<manifest
xmlns:android="http://schemas.android.com/apk/res/android"

package="com.google.android.app.myapp"
>

<uses-permission
android:name="android.permission.RECEIVE_SMS" />

</manifest>

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.