Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android應用框架

android應用框架

編輯:關於Android編程

 

android應用程序一旦裝進設備,每個程序會在它自己安全的沙盒裡運行。

1.android操作系統是一個多用戶linux系統,每一個應用程序是一個用戶。

2.默認情況下,系統會為每個app分配唯一的linux用戶id(這個id只會被系統使用,並且只會被這個app知道),系統為每個app的所有文件都設置了權限,只有被分配了這個app用戶ID的程序可以訪問它。

3.每個進程有它自己的VM,一個app的代碼和其他的是隔離運行的。

4.默認情況下,每個app運行在它自己的liunx進程下。當app的任何一個組件需要被執行的時候,android會開啟進程,當它不在需要或者系統必須為其他app恢復內存時,進程就會被關閉。

android用這種方法,實現了最少特權原則。那就是:每個app默認情況下只能訪問它需要的控件來工作而不需要其他多余的。這樣創建了一個非常安全的環境:app不能訪問系統其他未被授權的部分。

但是,有些方法可以用來和其他app共享數據和訪問系統服務:

1.安排兩個app來共享相同的linux用戶ID是可以的,這種情況下他們可以訪問各自的文件,為了保持系統資源,擁有相同userID的app可以在一個linux進程中運行並共享一個VM(應用必須使用相同的證書)。

2.一個app可以請求權限來訪問設備數據,比如用戶聯系人,短信等。所有的app權限必須在應用被安裝的時候被用戶確認。

以上解釋app存在於系統的基本信息,本文檔剩余內容向你介紹:

1.在你app中定義的核心框架組件。

2.聲明組件並且要求設備特征的manifest文件。

3.那些從你app代碼中分離的資源,允許你的程序要優雅地優化其行為的各種設備的配置。

APP組件

app組件是android應用的基本

Activities,Services(後天長時間的運行或為遠程進程工作),ContentPrivider,Broadcast receiver.

當系統start一個組件,那系統會為那個app start一個進程(若還沒運行),而且實例化那個組件需要的類,比如:當你的應用想通過系統照相來得到照片,那麼進程中跑得activity是屬於Camera app的而不是你的app的。因此,不想其他的大部分系統,Android應用沒有一個入點(比方說main()).

激活的組件

Manifest文件

在android系統開始一個組件前,系統在讀manifest文件時必須知道該組件存在。你的app必須在這個存在於app工程根目錄的文件中聲明所有的組件。

聲明組件能力

比如:你想創建一個email應用,你可以聲明一個intent filter來響應send intent像這樣:

 


    ...
    
        
            
                
                
                
            
        
    
然後,如果另一個app創建一個攜帶ACTION_SEND的intent而且傳給startActivity(),此時系統也許會啟動你的activity,這樣用戶就可以拖拽和發郵件了。

 

聲明app需求

為了保護你的應用程序能被安裝在那些缺少你的app必須的特征的設備上,你通過在manifest文件中明確的聲明一個你的應用可以安裝在哪些設備上的簡介是非常重要的。大多數的信息系統都不會讀取,但是外部的設備比如Google play為了那些從自己設備搜索app的用戶提供過濾。

比如你的應用需要一個照相機而且需要Android2.1,你應該在你的manifest文件中這樣聲明:

 


    
    
    ...
這時候,那些沒有照相機,而且Android版本低於2.1的設備就不能從Googleplay安裝你的應用。

 

但是,當你的應用使用camera但不是必須擁有一個Camera,這時候你應將 required 這個屬性設置為false.而且在運行時判斷時候於camera,適當的禁止任何相機的特征。

App資源

從代碼中分離開來來提供資源的一個重要方面是能使你給不同的設備配置提供可選的資源。比如在xml中定義UI Strings你可以將文字翻譯成不同的語言並保存到分離的文件中

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved