經過 start 方式開啓服務 onCreate() -- > onStartCommand() -- > onDestory() 注意:若是服務已經開啓,不會重複回調 onCreate() 方法,若是再次調用context.startService() 方法,service 而是會調用 onStart() 或者onStartCommand() 方法。中止服務須要調用 context.stopService() 方法,服務中止的時候回調 onDestory 被銷燬。 特色:一旦服務開啓就跟調用者(開啓者)沒有任何關係了。開啓者退出了,服務還在後臺長期的運行,開啓者不能調用服務裏面的方法。多線程
採用 bind 的方式開啓服務 onCreate() -- > onBind() --> onUnbind() -- > onDestory() 注意:綁定服務不會調用 onStart() 或者onStartCommand()方法 特色:bind 的方式開啓服務,綁定服務,調用者掛了,服務也會跟着掛掉。綁定者能夠調用服務裏面的方法。學習
本地服務線程
調用者和 service 在同一個進程裏,因此運行在主進程的 main 線程中。因此不能進行耗時操做,能夠採用在 service 裏面建立一個 Thread 來執行任務。service 影響的是進程的生命週期,討論與 Thread 的區別沒有意義。 任何 Activity 均可以控制同一 Service,而系統也只會建立一個對應 Service 的實例。 學習地址cdn
遠程服務blog
調用者和 service 不在同一個進程中,service 在單獨的進程中的 main 線程,是一種跨進程通訊方式。學習地址生命週期
IntentService 是 Service 的子類,比普通的 Service 增長了額外的功能。先看Service自己存在兩個問題:隊列
特徵 :進程