編輯:開發入門
一般情況android應用程序是由以下四種組件構造而成的:
需要注意的是,並不是每個Andorid應用程序都必須構建這4個組件,有些可能由這些組件的組合而成。
一旦你確定了你的應用程序中需要的組件,那麼你就應該在androidManifest.XML中列出他們。 這是一個XML配置文件,它用於定義應用程序中需要的組件、組件的功能及必要條件等。這個文件是必須的。 詳情參見android manifest file documentation
四種組件說明如下:
活動
活動是最基本的Andorid應用程序組件,應用程序中,一個活動通常就是一個單獨的屏幕。每一個活動都被實現為一個獨立的類,並且從活動基類中繼承而來, 活動類將會顯示由視圖控件組成的用戶接口,並對事件做出響應。 大多數的應用是由多屏幕顯示組成。例如,一個文本信息的應用也許有一個顯示發送消息的聯系人列表屏幕, 第二個屏幕用來寫文本消息和選擇收件人, 再來一個屏幕查看消息歷史或者消息設置操作等。這裡每一個這樣的屏幕就是一個活動,很容易實現從一個屏幕到一個新的屏幕並且完成新的活動。 在某些情況下當前的屏幕也許需要向上一個屏幕動提供返回值--比如讓用戶從手機中挑選一張照片返回通訊錄做為電話撥入者的頭像。
當打開一個新的屏幕時,之前一個屏幕會被置為暫停狀態並且壓入歷史堆棧中。用戶可以通過回退操回到以前打開過的屏幕。我們可以選擇性的移除一些沒有必要保留的屏幕,因為android會把每個從桌面打開的程序保留在堆棧中。
Intent 和 Intent Filters
調用android專有類 Intent 進行構屏幕之間的切換。 Intent是描述應用想要做什麼。Intent數據結構兩最重要的部分是動作和動作對應的數據。典型的動作類型有:MAIN(活動的門戶)、VIEW、PICK、EDIT等。而動作對應的數據則以URI的形式進行表示。例如:要查看某一個人的聯系方式,你需要創建一個動作類型為VIEW的intent,以及一個表示這個人的URI。
與之有關系的一個類叫IntentFilter。當intent被要求做某事的時候,intent filter用於描述一個活動(或者BroadcastReceiver,看下面)能夠操作哪些intent。一個活動如果要顯示一個人的聯系方式時,需要聲明一個IntentFilter,這個IntentFilter要知道怎麼去處理VIEW動作和表示一個人的URI。 IntentFilter需要在androidManifest.XML中定義。
通過解析各種intent,從一個屏幕切換到另一個屏幕是很簡單的。當向前導航時,活動將會調用startActivity(myIntent)方法。然後,系統會在所有安裝的應用程序定義的IntentFilter中查找,找到最匹配myIntent的Intent對應的活動。新的活動接收到myIntent的通知後,開始運行。當start活動方法被調用將觸發解析myIntent的動作,這個機制提供了兩個關鍵好處:
廣播接收器
你可以使用BroadcastReceiver來讓你的應用對一個外部的事件做出響應。比如:當電話呼入時,數據網絡可用時,或者到了晚上時。BroadcastReceivers不能顯示UI,它只能通過 NotificationManager來通知用戶這些有趣的事情發生了。BroadcastReceivers既可以在androidManifest.XML中注冊,也可以在代碼中使用Context.registerReceiver()進行注冊。但這些有趣的事情發生時,你的應用不必對請求調用BroadcastReceivers,系統會在需要的時候啟動你的應用,並在必要情況下觸發BroadcastReceivers。各種應用還可以通過使用Context.sendBroadcast() 將它們自己的intent broadcasts廣播給其它應用程序。
服務
一個服務是具有一段較長生命周期且沒有用戶界面的程序。比較好的一個例子就是一個正在從播放列表中播放歌曲的媒體播放器。在一個媒體播放器的應用中,應該會有多個活動,讓使用者可以選擇歌曲並播放歌曲。 然而,音樂重放這個功能並沒有對應的活動,因為使用者當然會認為在導航到其它屏幕時音樂應該還在播放的。在這個例子中,媒體播放器這個活動會使用Context.startService() 來啟動一個服務,從而可以在後台保持音樂的播放。同時,系統也將保持這個服務一直執行,直到這個service運行結束。(你可以通過閱讀Life Cycle of an android Application 獲取更多關於服務的介紹). 另外,我們還可以通過使用Context.bindService() 方法,連接到一個服務上(如果這個服務還沒有運行將啟動它)。當連接到一個服務之後,我們還可以通過服務提供的接口與它進行通訊。拿媒體播放器這個例子來說,我們還可以進行暫停、重播等操作。
內容提供器
應用程序能夠將它們的數據保存到文件、SQLite數據庫中,甚至是任何有效的設備中。當你想將你的應用數據與其它的應用共享時,內容提供其將會很有用。一個內容提供器類實現了一組標准的方法,從而能夠讓其它的應用保存或讀取此內容提供器處理的各種數據類型。 更詳細的內容提供器資料,可以參考附帶文檔中的 Accessing Content Providers。
所以Google Voice Recognition在android 的實現就變得極其輕松。語音識別,借助於雲端技術可以識別用戶的語音輸入,包括語音控制等技術,下面我們
在android的源代碼中,經常會看到形如:sp<xxx>、wp<xxx>這樣的類型定義,這其實是android中的智能指針。智能指針是C++中
android開發平台是開放的平台,而位於四層框架頂端的應用開發,必然涉及到android組件。本文將為大家詳細介紹android組件。 組件(Component)
環境監控系統在這個場景中,我們假設您是企業所在的若干辦公場所的資產管理員。管理資產與管理數據中心沒有太大的差別 — 一般情況下都很枯燥,只有出現緊急的情況下工作才會比較