android遠程service
1. android services是什麼
android中服務是運行在後台的東西,級別與activity差不多。既然說service是運行在後台的服務,那麼它就是不可見的,沒有界面的東西。可以啟動一個服務Service來播放音樂,或者記錄地理信息位置的改變,或者啟動一個服務來運行並一直監聽某種動作。Service和其他組件一樣,都是運行在主線程中,因此不能用它來做耗時的請求或者動作。
服務一般分為兩種:
1:本地服務, Local Service 用於應用程序內部彎信賣。在Service可以調用Context.startService()啟動,調用Context.stopService()結束。在內部可以調用Service.stopSelf() 或 Service.stopSelfResult()來自己停止。無論調用了多少次startService(),都只需調用一次stopService()來停止。
2:遠程服務, Remote Service 用於坦畢android系統內部的應用程序之間。可以定義介面並把介面暴露出來,以便其他應用進行埋逗操作。客戶端建立到服務對象的連接,並通過那個連接來調用服務。調用Context.bindService()方法建立連接,並啟動,以調用 Context.unbindService()關閉連接。多個客戶端可以綁定至同一個服務。如果服務此時還沒有載入,bindService()會先載入它。
2. android中的service到底起什麼作用 博客
Service 是android的一種機制,當它運行的時候如果是Local Service,那麼對應的 Service 是運行在主進程的 main 線程上的。如:onCreate,onStart 這些函數在被系統調用的時候都是在主進程的 main 線程上運行的。如果是Remote Service,那麼對應的 Service 則是運行在獨立進程的 main 線程上。因此請不要把 Service 理解成線程,它跟線程半毛錢的關系都沒有!
既然這樣,那麼我們為什麼要用 Service 呢?其實這跟 android 的系統機制有關,我們先拿 Thread 來說。Thread 的運行是獨立於 Activity 的,也就是說當一個 Activity 被 finish 之後,如果你沒有主動停止 Thread 或者 Thread 里的 run 方法沒有執行完畢的話,Thread 也會一直執行。因此這里會出現一個問題:當 Activity 被 finish 之後,你不再持有該 Thread 的引用。另一方面,你沒有辦法在不同的 Activity 中對同一 Thread 進行控制。
舉個例子:如果你的 Thread 需要不停地隔一段時間就要連接伺服器做某種同步的話,該 Thread 需要在 Activity 沒有start的時候也在運行。這個時候當你 start 一個 Activity 就沒有辦法在該 Activity 裡面控制之前創建的 Thread。因此你便需要創建並啟動一個 Service ,在 Service 裡面創建、運行並控制該 Thread,這樣便解決了該問題(因為任何 Activity 都可以控制同一 Service,而系統也只會創建一個對應 Service 的實例)。
因此你可以把 Service 想像成一種消息服務,而你可以在任何有 Context 的地方調用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,來控制它,你也可以在 Service 里注冊 BroadcastReceiver,在其他地方通過發送 broadcast 來控制它,當然這些都是 Thread 做不到的。
3. android service有什麼用
Service是Android系統中的四大組件之一,它是一種長生命周期的,沒有可視化界面,運行於後台的一種服務程序。如果service是被開啟的,那麼它的活動生命周期和整個生命周期一同結束。如果service是被綁定的,它們它的活動生命周期是在onUnbind()方法返回後結束。
service積極活動的生命時間(active lifetime)是從onStartCommand()或onBind()被調用開始,它們各自處理由startService()或bindService()方法傳過來的Intent對象。
(3)android遠程service擴展閱讀
service整體的生命時間是從onCreate()被調用開始,到onDestroy()方法返回為止。和activity一樣,service在onCreate()中進行它的初始化工作,在onDestroy()中釋放殘留的資源。
比如,一個音樂播放service可以在onCreate()中創建播放音樂的線程,在onDestory()中停止這個線程。onCreate()和onDestroy()會被所有的service調用,不論service是通過startService()還是bindService()建立。
4. android中localservice最本質的作用是什麼
Service在Android中扮演的角色是介於線程和進程之間的應用組件。它不僅僅是一個線程或者進程的等同物。Service的定義是:一個代表應用程序希望執行一個更長時間運行的操作而不與用戶交互,或者為其他應用提供功能的應用組件。
強調"longer running"是因為它與活動(Activity)這種生命周期較短的組件形成對比。一旦用戶切換到其他應用,當前的Activity可能需要暫停、停止甚至被銷毀,無法在後台處理其他事務。而Service則可以在後台持續運行,確保應用程序的後台操作得以執行,即使在活動被切換到後台或用戶完全離開應用程序時。
Service為何如此設計?這是因為移動設備內存和電池有限,因此需要在後台任務的執行和內存管理之間找到平衡。通過在manifest中聲明Service,將需要長期運行的邏輯放入Service中,應用程序可以獲得保障:只要系統內存不是極度不足,Service就不會被殺掉。系統在識別到一個進程中有Service運行時,會賦予該進程較高的優先順序,使其在內存不足時被終止的幾率降低。
雖然強調Service並不等同於進程或線程,但其實際運行環境取決於開發者的選擇。本地Service(未指定額外進程)通常在應用的主進程(UI線程)中運行,而遠程Service(指定額外進程)則在單獨的進程中運行。本地Service適用於那些需要短期運行但超出了活動活動周期的任務,比如發送簡訊或彩信,執行完畢後可以停止自己,不影響整個UI進程的回收。
選擇本地Service還是遠程Service?通常將真正需要長時間運行的服務(如即時通訊應用)放在單獨的進程中,以確保UI所在進程在必要時能夠被系統殺死,以騰出內存。而本地Service則常用於處理那些需要在活動生命周期之外短期運行的任務,如背景下載或接收通知,任務完成後Service可以停止自己,不影響整個UI進程的回收。
5. 華為手機Android系統服務MainService是什麼意思
遠程服務 Remote Service 用於android系統內部的應用程序之間
它可以通過自己定義並暴露出來的介面進行程序操作。客戶端建立一個到服務對象的連接,並通過那個連接來調用服務。連接以調用Context.bindService()方法建立,以調用 Context.unbindService()關閉。多個客戶端可以綁定至同一個服務。如果服務此時還沒有載入,bindService()會先載入它。