Service简介
?
Service是在一段不定的時間運行在后臺,不和用戶交互應用組件。每個Service必須在manifest中 通過<service>來聲明。可以通過contect.startservice和contect.bindserverice來啟動。和其他的應用組件一樣,運行在進程的主線程中。這就是說如果service需要很多耗時或者阻塞的操作,需要在其子線程中實現(或者用系統提供的IntentService,它繼承了Service,它處理數據是用自身新開的線程)。【當然你也可以在新的線程中startService,這樣Service就不是在MainThread了】
?
本地服務?Local Service 用于應用程序內部
它可以啟動并運行,直至有人停止了它或它自己停止。在這種方式下,它以調用Context.startService()啟動,而以調用Context.stopService()結束。它可以調用Service.stopSelf() 或 Service.stopSelfResult()來自己停止。不論調用了多少次startService()方法,你只需要調用一次stopService()來停止服務。
【用于實現應用程序自己的一些耗時任務,比如查詢升級信息,并不占用應用程序比如Activity所屬線程,而是單開線程后臺執行,這樣用戶體驗比較好】
?
遠程服務?Remote Service 用于android系統內部的應用程序之間
它可以通過自己定義并暴露出來的接口進行程序操作??蛻舳私⒁粋€到服務對象的連接,并通過那個連接來調用服務。連接以調用Context.bindService()方法建立,以調用 Context.unbindService()關閉。多個客戶端可以綁定至同一個服務。如果服務此時還沒有加載,bindService()會先加載它。
【可被其他應用程序復用,比如天氣預報服務,其他應用程序不需要再寫這樣的服務,調用已有的即可】
?
1,Service的生命周期
?
擁有service的進程具有較高的優先級
官方文檔告訴我們,Android系統會盡量保持擁有service的進程運行,只要在該service已經被啟動(start)或者客戶端連
接(bindService)到它。當內存不足時,需要保持,擁有service的進程具有較高的優先級。
?
轉載于:https://www.cnblogs.com/softwarelanguagebs/p/4715490.html
總結
- 上一篇: 分享在MVC3.0中使用jQuery D
- 下一篇: 有关Struts2a的ction直接使用