Android開發之Thread和Service的應用場合的區別

1)

  • Thread 是程序執行的最小單元,它是分配CPU的基本單位,可以用 Thread 來執行一些異步的操作。
  • 如果是Local Service,那麼對應的 Service 是運行在主進程的 main 線程上的。如果是Remote Service,那麼對應的 Service 則是運行在獨立進程的main 線程上。因此 Service不是線程!

2)

  • Thread 的運行是獨立於 Activity 的,也就是說當一個 Activity 被 finish 之後,如果你沒有主動停止Thread 或者Thread 裏的 run 方法沒有執行完畢的話,Thread 也會一直執行。因此這裏會出現一個問題:當 Activity 被 finish 之後,你不再持有該 Thread 的引用。另一方面,你沒有辦法在不同的 Activity 中對同一 Thread 進行控制。
  • 而任何 Activity 都可以控制同一 Service,而系統也只會創建一個對應 Service 的實例。因此你可以把 Service 想象成一種消息服務,而你可以在任何有 Context 的地方調用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,來控制它,你也可以在 Service 裏註冊 BroadcastReceiver,在其他地方通過發送 broadcast 來控制它,當然這些都是 Thread 做不到的。

3) Service組件主要有兩個目的:後臺運行和跨進程訪問。service可以在android系統後臺獨立運行,線程是不可以。

4) Service類是可以供其他應用程序來調用這個Service的而Thread只是在本類中在使用,如果本類關閉 那麼這個thread也就下崗了而Service類則不會.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章