在Android 程序中有四個部分
Activity 活動
Intent Receiver
Service 服務
Content Provider
一般程序都用到上述的組合實現。
一但你確定了你的程序時什么類型的組件,你應該在AndroidManifest.xml中列出?!驹谶@個文件中,你可以聲明這些組件的能力和需求】
1.1 Activity
活動時最基本的程序塊,由一個繼承Activity 的類來實現【通常是具有單一屏幕】。
這個類將顯示一個組合Views的用戶接口,來響應事件。
多數程序都由多個屏幕,每個屏幕由一個Activity 來實現,屏幕的移動通過啟動一個新的Activity來實現,不同Activity之間可能共享傳遞數據。
以及當前屏幕跟后臺暫停的屏幕之間的調度、堆棧管理,數據交互傳輸、基準屏幕管理都時活動需要研究的概念。
1.2 Intent and Intent Filters
Android 通過類Intent 來從一個屏幕移動到另外一個屏幕【其描述一個應用系統想做什么】
其中最重要的有兩個部分概念:
動作 和 數據
動作的一般值有:MAIN,VIEW,PICK,EDIT 等
數據通過URI表示。
比如:為了查看一個人的合同信息,可以創建一個Intent其具有一個View 動作,以及代表人的URI數據。
另外一個相關類:IntentFilter,
一個Intent 是做東西的一個有效請求
Intent filter 是一個Activity 能夠處理的什么Intent的描述。
比如:顯示一個人的合同信息的活動,將發布一個IntentFilter ,其說明它知道如何處理動作視圖,當應用數據來表示一個人。
Android 將在AndroidManifext.xml中指定IntentFilters
屏幕之間的導航通過解析Intents,往前跳轉時,一個Activity調用startActivity(myIntent),此時系統將查找所有安裝系統的Intents filters.并且獲取能夠跟myIntent匹配的活動。
新活動將被通知,調用。
解析Intents的過程在startActivity調用時發生,具有如下好處:
通過intent的方式來創建請求,使得Activities能夠實現跨組件功能復用。
任何活動可以被具有同等的IntentFilter的新活動替換。
【設計框架要保證系統的服務模塊具有統一的接口可以進行替換處理】
1.3 Intent Receiver
如果想在你的系統中執行對特定事件的響應時,你可以采用IntentReceiver。
如:電話響了,網絡數據可用了,午夜定時到了。
Intent Receiver 不能顯示UI【類似SAP 的R3 開發平臺中的工作進程的后臺進程】,雖然可以用NotificationManager來提示用戶在有趣的事情發生時,通過在AndroidManifest.xml中注冊。同時也可以通過Context.registerReceiver()代碼進行注冊。
不必要為了被調用的Intent receiver 來運行應用程序。系統將會啟動你的程序在一個internt receiver 觸發時。
系統也會發送其自己的intent 傳播給其它的系統。通過Content.broadcastIntent()
1.4 Service
Service是那種沒有UI的長時間運行的代碼?!久襟w播放器,在此播放器中,可能有一個或多個activites來允許用戶選擇歌曲或者開始播放;但是即使轉向一個新的Screen,歌曲最好仍然播放】
此時媒體播放器應該利用Context.startService來啟動一個服務在后臺運行,系統會一直運行的,直到完成為至。
可以通過Context.bindService來連接一個服務,然后通過服務的接口交互。
更多詳細請看:Life Cycle of an Adrioid Application
1.5 Content Provider
程序可以在文件/SQLLite 數據庫存儲數據。如果你想同別的程序共享數據,你可以用Content provider. 一個Content Provider 即是一個類其實現一套標準的方法讓其它程序能夠存取相應的數據的。
更多內容請關注:存取操作Content Providers.