星期一, 8月 22, 2011

組件

Android應用程式筆記


Android應用程式組件是在建置應用程式相當重要的元素,系統可以通過不同組件進入應用程式,並不是所有組件都有給使用者進入應用程式實際方式,而是依靠其他組件,每一個組件擁有各自獨特的功能幫助建置應用程式的行為。

Android有四種不同的應用程式組件,每一組建有分明的功能和生命週期,以下是四種組件的簡單介紹:

Activities
一個activity顯示一個使用者介面。例如電子郵件應用程式可能會有一個activity顯示所有未閱讀的電子郵件,另一個activity顯示撰寫電子郵件,另一個activity顯示閱讀電子郵件。雖然這些activities一起運作拚合成使用者使用電子郵件應用程式的經驗,但是activity之間是互相獨立的。其他應用程式也可以啟動電子郵件應用程式中的任何一個activity,只要電子郵件應用程式允許。例如攝影應用程式啟動電子郵件應用程式中的撰寫新郵件的activity,去分享攝影的圖片。
Services
一個service是運行在後台執行長時間運行的服務或為遠端執行續執行的組件。service不提供使用者介面,因此使用者並不能直接使用service組件。例如service可能是當使用者使用不同應用程式時在後台播放音樂的service組件,或者可能是不會干擾使用者與activity互動下從網路取得資料的service組件。其他的組件可以啟動service或者綁定service與它互動。
Content providers
一個content provide管理一組應用程式分享的資料。我們可以將資料存在檔案系統、SQLite資料庫、網路上、或者任何應用程式可以存取的本地持久性存儲,透過content provider可以查詢或者甚至修改資料。例如andoird系統提供一個content provider管理使用者聯絡人的資訊,因此任何有適合權限的應用程式都可以查詢content provider的部分去讀寫聯絡人資訊。
content provier也可用來讀寫應用程式私有不分享的資料,例如Note Pad應用程式使用content provider存下筆記。
Broadcast receivers
Broadcast receiver組件負責回應全系統廣播的公告。許多廣播來自系統,如廣播公告螢幕即將被關閉、電量過低、或者圖片被截取。應用程式也可以初始廣播,如通知其他應用程式知道有一些資料已經下載到裝置,它們可以使用了。雖然broadcast不會顯示使用者介面,他們可以當廣播事件發生時創造狀態列警告去告知使用者。更常見地,broadcast receiver是到其他組件的一種"管道"。

Android系統設計的獨特方面是任何應用程式可以啟動其他應用程式的組件。例如如果你希望使用者用攝影裝置擷取一張相片,有可能其他應用程式可以做到,然後你的應用程式可以使用它來代替自己開發一個activity去擷取相片,你無須合併或甚至連接來自攝影機應用程式的程式碼。反而你可以簡單啟動在攝影機應用程式的activity去擷取相片。當完成擷取後,相片回傳到你的應用程式使用。對於使用者,這樣的方式攝影機似乎就是你的應用程式的一部份。

當系統啟動組件時,系統為應用程式啟動執行續及實作組件需要的類別。例如你的應用程式啟動在攝影機應用程式中的activity去擷取相片,那個activity運行在攝影機應用程式之下,並不是在你的應用程式執行續中。因此,不像其他大部分的應用程式,android應用程式沒有單一進入點(沒有main()方式)。

因為系統運行每一個應用程式於個別有檔案權限的執行續中以限制存取其他應用程式,你的應用程式無法直接激活其他應用程式的組件。然而android系統可以,所以激活其他應用程式的組件,你必須傳送訊息給系統,並指定你的intent給特定組件,然後系統幫你激活其他組件。

感謝大家閱讀,如有錯誤歡迎指教,謝謝。

沒有留言:

張貼留言