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()。