標籤:android c style a ext color
- 一旦安裝到了一個裝置,每個應用生存在它自己的安全沙箱
- 系統給每個應用程式指派一個獨立的Linux使用者ID(這個ID只由系統使用並且對應用來說是不可知的)
- Android系統實現了最小特權原則。預設,每個應用僅僅訪問需要工作的組件,並不多做其他的事。這樣建立了一個非常安全的環境,應用不能訪問系統沒有授權的其他部分
- 有可能安排兩個應用共用一個linux系統ID,在那種情況下,它們能互相訪問相互的資料。為了節約系統資源,擁用相同使用者ID的應用,可能也被安排運行在同一個Linux進程中並共用相同的VM(應用必須被簽名成同樣的認證)。
- 一個service是長期運行在後台,執行操作的組件,甚至可以為遠程進程工作
- 廣播接收者,不能顯示使用者介面,但當一個廣播事件發生時,它們可以建立一個狀態通知器,去提醒使用者.但更多情況下,一個廣播接收者只是一個其他組件,想要做極小量事件的一個"gateway”(途徑).舉例,它可能發起一個服務,去執行關於某個事件的一些工作.
- 任何一個應用能啟動另一個其他應用的組件,是Android系統設計獨一無二的方面(aspect)
- 不像大多數其他的系統的應用,Android應用,沒有單個的入點(比如沒有main()函數).
- 你的應用不能直接存取其他應用中的組件.但時,Android系統也能啟用其他應用的組件.你必須傳一個訊息給系統,指定你想要啟動的組件,然後系統為你啟用這個組件
- 4個組件中的其中三個組件---activities,serivces,和broadcast receivers----是被叫做intent的非同步訊息啟用的.在運行時,Intents把某個的組件與其他的組件互相綁定,而不管這個組件是否屬於你的應用還是其他的應用(你可以把它們想像成一個訊息,用於請求一個其他組件的動作).
- 內容提供者,不會被intents所啟用.進一步講,它是內容解釋者(ContentResolver)所請求的目標所啟用的.內容解釋者,處理所有與內容提供者的直接交換.所以組件不需要執行與提供者交換,而是調用ContentResolver對象方法.(這一句不好理解。)為了安全起見,組件請求資訊與內容提供者之間有一個抽象層
- 可以通過使用sendBroadcast(), sendOrderedBroadcast(), 或者 sendStickyBroadcast()三種方法來廣播一個intent
- Activites,services和內容提供者,若沒有在manifest中聲明,對系統來說是不可見的,即將永遠不會運行。但是,廣播接收者即可以在manifest中聲明,也可以在代碼中動態建立(做為BroadcastReceiver對象)並且通過registerReceiver()方法向系統註冊。
- 在你的manifest檔案中用<supports-screens> 元素宣告,以明確指出你的應用支援的螢幕尺寸.螢幕大小:小,正常,大和極大 螢幕密度:低密度,中密度,高密度,和極高密度
- 如果你的應用必須要一個特別的輸入硬體,那麼你應在你的應用中使用<uses-configuration>元素宣告.但時,應用必須要一個特別的輸入配置的情況是極少的
- 比如照相機,光敏器件,藍芽,或某個版本的OpenGL,或者觸模屏的精度,你應該用 <uses-feature>元素宣告你的應用支援的特徵
- 你應該用<uses-sdk>元素,聲明最小API層級,這樣就指出了那些API將被採用.
- 為你的應用聲明所有必要性的要求非常重要.因為,當你把你的應用發布到Android市場.市場,將用這些聲明資訊來過濾出,那些應用在每個裝置是可用的. 同樣,你的應用應該只能在滿足所有你應用需求的裝置上才可用