Android Manifest之<service>元素中文注釋

來源:互聯網
上載者:User

文法
    <service android:enabled=["true" | "false"]

         android:exported=["true" |"false"]

         android:icon="drawable resource"

         android:isolatedProcess=["true" | "false"]

         android:label="string resource"

         android:name="string"

         android:permission="string"

         android:process="string">

        . . .

    </service>

父元素
    <application>

子項目
    <intent-filter>

    <meta-data>

描述
    聲明一個作為應用組件的service(Service的子類)。和activities不同的是,services缺乏可視化的使用者介面。它們用來實現長期啟動並執行後台操作或由其它應用調用的富通訊API。

    所有的services都必須在manifest檔案中通過<service>元素來表示。沒有在manifest中聲明的將對系統不可見並且絕不會運行。

屬性
android:enabled

   是否這個service能被系統執行個體化-如果能則為true,否則為false。預設為true。

    <application>元素有它自身的能應用到所有應用組件的enabled屬性,包括services。要是這個service要enabled,那麼這個<application>和<service>屬性都必須為true(它們都是預設值)。如果有一個為false,這個服務就會disabled;它就不會被執行個體化。

android:exported

    是否其它應用組件能調用這個service或同它互動-如果能則為true,否則為false。當值為false時,只有同一個應用的組件或有相同使用者ID的應用能啟動這個服務或綁定它。

    預設值依賴於服務是否包含intent filters。過濾器的缺失意味著它只能通過指定它準確類名來調用它。這就意味著這個服務只能在應用內部被使用(因為其它應用不知道類名)。因此,在這種情況下,預設值是false。另一方面,至少有一個過濾器意味著這個服務可以在外部被使用,因此,預設值為true。

    這個屬性並非是限制這個服務暴漏給其它服務的唯一途徑。你也能通過許可權來限制跟服務互動的外部實體(參見permisson屬性)。

android:icon

    服務呈現的表徵圖。這個屬性必須被設定為包含圖片的drawable資源的引用。如果沒有設定,那麼這個application的表徵圖將代替它(參見<application>元素的icon屬性)。

    對所有的intent filters來說,這個服務的表徵圖無論是自身設定的還是通過<application>設定的,都是它們的預設表徵圖(參見<intent-filter>元素的icon屬性)。

android:isolatedProcess

    如果設定為true,這個服務將運行在專門的進程中,這個進程從系統的剩餘部分獨立出來,它自身沒有許可權。同它唯一的通訊方式就是通過這個Service API(binding或starting)。

android:label

    這個服務給使用者顯示的名稱。如果這個屬性沒有設定,將使用<application>的label屬性代替(參見<appliation>元素的label屬性)。

    這個服務的label,無論是通過自身設定的,還是通過application設定的,對於這個service的intent filters來說都是預設值(參見<intent-filter>元素的label屬性)。

    這個label應當設定為string資源的引用,以便在使用者介面中能同其它string資源一樣本地化。然而,在開發應用時為了方便起見,它也能被設定為raw串。

android:name

   實現這個service的Service子類名稱。這應當是完整格式的類名(例如,“com.example.project.RoomService”)。然而,作為一個簡寫,如果名稱的第一個字母是點(例如,“.RoomService”),  它會被添加到在<manifest>元素中聲明的包名後面。

   一旦你發布了你的應用,你就不要修改這個名字(除非你設定了android:exported=false)。

   沒有預設值,這個名稱必須被指定。

android:permission

    為了啟動這個service或綁定到它一個實體必須要有的許可權的名稱。如果startService(),bindService()或stopService()的調用者還沒有擷取這個授權,那麼這些方法就不會工作,而且這個intent對象也不會傳遞到service。

    如果這個屬性沒有設定,由<application>元素的permission屬性設定的許可權就會應用到這個service。如果都沒有設定,那麼這個服務就不再受許可權保護。

android:process

    服務將要啟動並執行進程名稱。一般來講,應用的所有組件都運行在應用建立的預設進程中。就像應用的包名一樣。<application>元素的process屬效能對所有組件設定不同的預設值。然而,組件能通過它自身的process屬性重寫預設值,從而允許你擴充你的應用跨越多個進程。

    如果分配到這個屬性的名稱以冒號(:)開始,那麼當需要它的時候,一個新的、對這個應用私人的進程就被建立,同時這個服務就在哪個進程運行。如果進程的名字以小寫字母開始,那麼這個服務將運行在全域進程中。這就允許在不同應用中的組件共用這個進程,降低資源的消耗。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.