當前位置:編程學習大全網 - 遊戲軟體 - Android中的Service到底起什麽作用?

Android中的Service到底起什麽作用?

Service 是android的壹種機制,當它運行的時候如果是Local Service,那麽對應的 Service 是運行在主進程的 main 線程上的。如:onCreate,onStart 這些函數在被系統調用的時候都是在主進程的 main 線程上運行的。如果是Remote Service,那麽對應的 Service 則是運行在獨立進程的 main 線程上。因此請不要把 Service 理解成線程,它跟線程半毛錢的關系都沒有!\x0d\\x0d\  既然這樣,那麽我們為什麽要用 Service 呢?其實這跟 android 的系統機制有關,我們先拿 Thread 來說。Thread 的運行是獨立於 Activity 的,也就是說當壹個 Activity 被 finish 之後,如果妳沒有主動停止 Thread 或者 Thread 裏的 run 方法沒有執行完畢的話,Thread 也會壹直執行。因此這裏會出現壹個問題:當 Activity 被 finish 之後,妳不再持有該 Thread 的引用。另壹方面,妳沒有辦法在不同的 Activity 中對同壹 Thread 進行控制。\x0d\  \x0d\  舉個例子:如果妳的 Thread 需要不停地隔壹段時間就要連接服務器做某種同步的話,該 Thread 需要在 Activity 沒有start的時候也在運行。這個時候當妳 start 壹個 Activity 就沒有辦法在該 Activity 裏面控制之前創建的 Thread。因此妳便需要創建並啟動壹個 Service ,在 Service 裏面創建、運行並控制該 Thread,這樣便解決了該問題(因為任何 Activity 都可以控制同壹 Service,而系統也只會創建壹個對應 Service 的實例)。\x0d\  \x0d\  因此妳可以把 Service 想象成壹種消息服務,而妳可以在任何有 Context 的地方調用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,來控制它,妳也可以在 Service 裏註冊 BroadcastReceiver,在其他地方通過發送 broadcast 來控制它,當然這些都是 Thread 做不到的。

  • 上一篇:薦姑姑結婚送什麽好--結婚送禮送壹份甜蜜讓她永久珍藏求解答
  • 下一篇:求第七史詩露娜高清全身圖
  • copyright 2024編程學習大全網