Android應用程式學習筆記
The Androidmanifest's file
Declaring component capabilities
在之前學習到如何激活組件,我們可以使用Intent物件來啟動activities、services及broadcast receiver,你可以這樣做,在intent物件中明確地命名目標組件,intent的真正威力在於intent action的觀念,有intent action你可以輕易的描述想執行的動作型態,並允許系統去找裝置上能執行該動作的組件且啟動它。如果有許多組件都能完成intent描述的動作,然後使用者選擇一個來使用。
系統辨識可以回應intent的組件的方式是藉由比較intent接收到在裝置上其他應用程式的the androidmanifest's file的意圖過濾器(intent filters)。
當你在the manifest's file中宣告組件時,你可以在組件屬性中選擇包含意圖過濾器,因此,它才可以回應其他應用程式的意圖。你可以為你的組件增加<intent-filter>標籤來宣告意圖過濾器。
例如,電子郵件應用程式有一個用來撰寫新郵件的activity,可以在the androidmanifest's file宣告意圖過濾器來回應"send"意圖。在你的應用程式的一個activity可以產生有"send"動作(ACTION_SEND)的意圖,系統配電子郵件應用程式的"send"activity,並在當你用startActvity()方法傳遞意圖啟動activity。
好了,就以上簡短的內容做小小的總結。
總結:
我的應用程式中的組件可以被其他應用程式所調用,這是因為我的組件允許其他組件調用。那要怎麼允許其他組件調用就是要在manifest檔案中做一個宣告,用<intent-filter>標籤宣告,這樣就能允許其他組件調用了。其他更詳細內容會在之後花一些時間寫成文章。
星期四, 9月 22, 2011
星期三, 9月 21, 2011
Application components
Android應用程式學習筆記
Application components
應用程式組件是組建android應用程式的重要區塊,每個組件都是系統能進入應用程式的不同進入點。不是所有組件都有給使用者實際進入點,有些是要依賴其他組件,但是每個組件都有它自己的實體和扮演的角色-每個組件都有獨一的建立區塊來幫助你完成應用程式的完整行為。
有四種類型應用程式組件,每種類型都有其目的以及生命週期。
以下就來簡單介紹這四種類型組件:
Activities
當系統啟動一個組件,它會為應用程式產生進程,且實作組件需要的類別。例如,如果你的應用程式攝影應用程式擷取相片的activity,activity運行在屬於攝影應用程式的進程中,而不是在你的應用程式的進程中,因此,不像在大部分平台的應用程式,android應用程式不會有單一的進入點。
因為系統執行應用程式於分開的進程中,對其他應用程式有文件權限來限制存取,你的應用程式無法直接啟動其他應用程式的組件,然而,android系統可以,所以,激活其他應用程式的組件,你必須傳遞一個訊息給系統,你的intent物件來指定要啟動的特定組件,然後系統為你啟動組件。
Application components
應用程式組件是組建android應用程式的重要區塊,每個組件都是系統能進入應用程式的不同進入點。不是所有組件都有給使用者實際進入點,有些是要依賴其他組件,但是每個組件都有它自己的實體和扮演的角色-每個組件都有獨一的建立區塊來幫助你完成應用程式的完整行為。
有四種類型應用程式組件,每種類型都有其目的以及生命週期。
以下就來簡單介紹這四種類型組件:
Activities
簡單地來說明activity的意思,可以解釋一個activity顯示一個使用者介面。例如,一個電子郵件應用程式可能有一個activity來列表顯示所有新郵件的介面,另一個activity來顯示撰寫郵件功能的介面,另一個activity顯示讀郵件的介面。在電子郵件應用程式中有許多activities通力合作拼合成使用者的使用體驗。而activities彼此之間是獨立的,因此,不同的應用程式可以啟動這些activties中的任何一個activity。例如,攝影應用程式可以啟動電子郵件應用程式的activity來撰寫新郵件,為了與朋友分享照片。
實現一個activity要繼承Activity類別。Services
service是運行在後台的組件,用來執行長時間的操作或執行遠端進程的工作。與activity不同,service是不提供使用者介面。例如,一個service可能在後台播放音樂,當使用者在不同應用程式,或者從網路取得數據且不會阻塞正在與使用者互動的activity。其他組件也能啟動service並讓它運,或者綁定它與它互動。
實現service必須繼承Service類別。Content provider
Content provider主要功能在管理應用程式分享的數據。你可以儲存數據在檔案系統、SQLite資料庫、網路、或者其他你得應用程式能夠存取的儲存設備,通過content provider,其他應用程式可以查詢甚至修改這些數據。例如,android系統提供content provider管理使用者的聯絡人資訊。因此,有適合許可的應用程式可以查詢content provider的部分,去讀及寫私人的資訊。
content provide也可以用來讀及寫你的應用程式私有的、不想分享的數據。Broadcast receiver
Broadcast receiver是用來回應系統廣播的公告,許多廣播來自系統-例如,廣播公告螢幕已經關閉、電池為低電量或以取得相片。應用程式也可以初始一個廣播,例如,讓應用程式知道數據已經下載ˇ到裝置中,並且已準備好可以使用。雖然,broadcast receiver不提供使用者介面,它們可以在廣播事件發生時產生狀態列來提醒使用者。更常見地,廣播接收器就是其他組件的"出入口",也被命令做少量工作。
Broadcast receiver繼承自BroadcastReceiver類別,每個廣播透過Intent物件傳遞訊息。Android系統獨特的設計是任何應用程式可以啟動其他應用程式的組件。例如,如果你想使用者用攝影機擷取相片,有其他應用程式也可以做到,那你的應用程式也可以用此應用程式來完成擷取相片的功能,取代自己開發。你不需要合併或者甚至連接攝影應用程式的程式碼,取而代之的是你可以輕易地攝影應用程式的activity來擷取相片。當完成後,相片甚至可以回傳到你的應用程式,所以你可以使用相片,對使用者來說,相機似乎就是應用程式的一部份。
當系統啟動一個組件,它會為應用程式產生進程,且實作組件需要的類別。例如,如果你的應用程式攝影應用程式擷取相片的activity,activity運行在屬於攝影應用程式的進程中,而不是在你的應用程式的進程中,因此,不像在大部分平台的應用程式,android應用程式不會有單一的進入點。
因為系統執行應用程式於分開的進程中,對其他應用程式有文件權限來限制存取,你的應用程式無法直接啟動其他應用程式的組件,然而,android系統可以,所以,激活其他應用程式的組件,你必須傳遞一個訊息給系統,你的intent物件來指定要啟動的特定組件,然後系統為你啟動組件。
星期日, 8月 21, 2011
Android應用程式基礎
Android應用程式筆記
- Android作業系統是一個多用戶linux系統,應用程式之間彼此是不同的用戶;
- 系統分配每個應用程式一個唯一的linux使用著ID,這個ID只有系統知道,應用程式並不知道,系統為每個應用程式中所有的檔案設定權限,因此只有被分配到使用者ID的應用程式可以使用系統中的資源;
- 每個進程(process)擁有各自的虛擬機器,因此應用程式與應用程式彼此之間是互相隔離的;
- 每個應用程式運行在自己的linux執行緒中。當任何一個應用程式的元件需要被執行時,android便會自動啟動執行續,然後在元件不再需要時或者系統必須為其他應用程式回收記憶體時會關閉執行續。
然而,還是有一些方法讓應用程式之間分享資料以及存取系統服務:
- 安排兩個應用程式分享同一個linux使用者ID是可能的,如此這兩個應用程式就可以存取彼此的檔案。為保護系統資源,有相同linux使用者ID的應用程式也可以安排運行相同的linux執行緒中及分享相同的虛擬機器。
- 應用程式可以要求存取裝置資料的權限,如使用者聯絡人、SMS 訊息、可安裝存儲(SD card)、攝影機、藍芽等等。這些應用程式權限必須在使用者安裝時就授予。
星期六, 8月 20, 2011
Android架構
今天跟大家分享自學的Android架構的知識筆記
以下是從官網節錄下來的架構圖
Android架構分成Application、Application Framwork、Libraries、Android Runtime、Linux Kernel。
看完架構圖之後,現在就依照各部分簡單說明。
Application:
應用層簡單說明就是我們在手機裝置或移動裝置上使用到的所有應用程式與其他功能,包括email client、SMS program、日曆、地圖、瀏覽器、聯絡人等等,都是屬於應用層。所有的應用程式皆由Java程式語言撰寫。
Application Framework:
應用架構層簡單說明是提供應用程式開發員開放開發平台,開發員可以自由使用裝置硬體、存取本地資訊、運行背景服務、設定鬧鐘、增加狀態列等等的優點。所有應用程式底層由幾個服務與系統組成,包括View、Content providers、Resourse manager、Notification manager、Acticity manager。View中包含豐富建立應用程式畫面的元件,如按鈕、lists、grids、甚至可嵌入的網頁瀏覽器;Content provider使應用程式能夠存取來自其他應用程式的資料,或者分享自己的資料給其他應用程式;Resourse manager提供存取非代碼的資源,如本地化的字串、圖片、layout files;Notification manager使所有應用程式能夠在狀態列上顯示一些自定義的警報訊息;、Acticity manager管理應用程式的生命週期。
Libraries:
Libraries是一組C/C++函式庫,這些函式庫被android系統各個元件使用,而這些元件功能通過android framework給應用程式開發者加以使用。一些核心函式庫包括System C library、Media libraries、Surface manager、LibWebCore、SGL、3D libraries、FreeType、SOLite。Media libraries基於PacketVideo的OpenCORE,函式庫支持播放和錄音許多影音格式,包含MPEG4、H.264、MP3、AAC、JPG和PNG;SGL為2D圖形引擎;3D libraries執行基於OpenGL ES 1.0 APIs;SOLite功能強大的關聯式資料庫。
Android Runtime:
每一個Android的應用程式運行在自己的Dalvik虛擬機器及執行緒中。
Linux:
android底層是Linux 2.6版本為核心系統。
認識android架構後,對於開發者有甚麼好處呢?個人是覺得如果是想開發應用程式的話,一定要把application與application framework摸熟,因為應用程式只要使用這兩層完成的;如果是想開發嵌入式程式就要多多把更底層的libraries和android runtime等摸熟了,自己也剛開始學習android,歡迎大家指教囉。
以上就是android架構的簡單介紹,希望讀者能對android架構有初步認識,其中如有錯誤還請各位指教,感謝閱讀。
以下是從官網節錄下來的架構圖
Android架構分成Application、Application Framwork、Libraries、Android Runtime、Linux Kernel。
看完架構圖之後,現在就依照各部分簡單說明。
Application:
應用層簡單說明就是我們在手機裝置或移動裝置上使用到的所有應用程式與其他功能,包括email client、SMS program、日曆、地圖、瀏覽器、聯絡人等等,都是屬於應用層。所有的應用程式皆由Java程式語言撰寫。
Application Framework:
應用架構層簡單說明是提供應用程式開發員開放開發平台,開發員可以自由使用裝置硬體、存取本地資訊、運行背景服務、設定鬧鐘、增加狀態列等等的優點。所有應用程式底層由幾個服務與系統組成,包括View、Content providers、Resourse manager、Notification manager、Acticity manager。View中包含豐富建立應用程式畫面的元件,如按鈕、lists、grids、甚至可嵌入的網頁瀏覽器;Content provider使應用程式能夠存取來自其他應用程式的資料,或者分享自己的資料給其他應用程式;Resourse manager提供存取非代碼的資源,如本地化的字串、圖片、layout files;Notification manager使所有應用程式能夠在狀態列上顯示一些自定義的警報訊息;、Acticity manager管理應用程式的生命週期。
Libraries:
Libraries是一組C/C++函式庫,這些函式庫被android系統各個元件使用,而這些元件功能通過android framework給應用程式開發者加以使用。一些核心函式庫包括System C library、Media libraries、Surface manager、LibWebCore、SGL、3D libraries、FreeType、SOLite。Media libraries基於PacketVideo的OpenCORE,函式庫支持播放和錄音許多影音格式,包含MPEG4、H.264、MP3、AAC、JPG和PNG;SGL為2D圖形引擎;3D libraries執行基於OpenGL ES 1.0 APIs;SOLite功能強大的關聯式資料庫。
Android Runtime:
每一個Android的應用程式運行在自己的Dalvik虛擬機器及執行緒中。
Linux:
android底層是Linux 2.6版本為核心系統。
認識android架構後,對於開發者有甚麼好處呢?個人是覺得如果是想開發應用程式的話,一定要把application與application framework摸熟,因為應用程式只要使用這兩層完成的;如果是想開發嵌入式程式就要多多把更底層的libraries和android runtime等摸熟了,自己也剛開始學習android,歡迎大家指教囉。
以上就是android架構的簡單介紹,希望讀者能對android架構有初步認識,其中如有錯誤還請各位指教,感謝閱讀。
訂閱:
文章 (Atom)