android複習路之Service篇

Service:

1.生命週期:

onCreate()->onstartCommand()->onDestory()

onCreate()->onBind()->unBind()->onDestory()

使用服務一定要在Xml文件中註冊服務。

2.服務分兩種一種是需要綁定的一種是不需要綁定的,需要綁定的服務啓動方式是調用bindService()綁定服務給activity並且啓動activity(),另外一種是調用startService直接啓動服務不需要綁。

3.Service 的實例有且僅會有一個,如果startService或者BindService()之後Service後再也不會創建Service的實例當然也不會調用onCreate()。

4.一個服務可以綁定到多個activity上,只有所有的用戶都執行了unBind()方法之後纔會銷燬該服務,如果只有一個用戶執行了onstart(),其餘用戶都執行了unBind()該Service也不會銷燬。

5.Service在main thread線程中所有它不能用來執行耗時操作,但是可以在它的子線程中進行耗時操作比如I/O。

6.Activiyt,intent,Service之間的關係,共同點:它們都是Context類的子類ContextWrapper的子類。不同點Activiyt的作用是負責前臺頁面的展示和與用戶交互,Service的作用是負責後臺的服務,intent可以看作是Service和Activity的通性使者。

7.彈吐司的要求是需要又一個Context上下文,而Service本身就是Context的子類所以是可以彈吐司的。

8.停止服務非綁定的Service調用stopService()停止服務,綁定的服務可以調用unBind()進行停止服務。

9.爲什麼在Service中開子線程而不是在activity中開子線程?

activity很難對thread進行把控,如果activity銷燬了再也沒有任何的辦法重新獲得線程的實例,而且在一個activity中創建了子線程而其他的activity是無法操作該線程的。但是Service就不同了,所有的activity都可以通過BindService()和Service進行關聯,可以很方便的操作裏面的方法,即使activity被銷燬了,只要後續重新跟Service重新建立關聯就可以取到原來的實例。因此可以用Service進行後臺的任務處理,activity可以安全的finish()。


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