国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Service 的生命周期;兩種啟動方法和區別

2019-11-09 16:22:26
字體:
來源:轉載
供稿:網友

1:startService Service的生命周期:onCreate() --> onStart() -> onDestroy()

停止服務:service.stopService()2:bindServiceService的生命周期 onCreate() --> onBind()  --> onUnBind() --> onDestroy()

停止服務:UnbindService()再StopService()

 【在開發中我發發現,當app執行 PRocess.killProcess(Android.os.Process.myPid()) ; System.exet(0): 的時候】

系統會重啟service

針對不同版本的系統。有的系統會執行context.startService  而有的會 執行context.bindService

兩者唯一的相同點就是都會重啟service

使用startService()方法啟用服務,調用者與服務之間沒有關連,即使調用者退出了,服務仍然運行。使用bindService()方法啟用服務,調用者與服務綁定在了一起,調用者一旦退出,服務也就終止,大有“不求同時生,必須同時死”的特點。

 一個原則是Service的onCreate的方法只會被調用一次,就是你無論多少次的startService又bindService,Service只被創建一次。如果先是bind了,那么start的時候就直接運行Service的onStart方法,如果先是start,那么bind的時候就直接運行onBind方法。如果你先bind上了,就stop不掉了,對啊,就是stopService不好使了,只能先UnbindService,再StopService,所以是先start還是先bind行為是有區別的。

 如果打算采用Context.startService()方法啟動服務,在服務未被創建時,系統會先調用服務的onCreate()方法,接著調用onStart()方法。如果調用startService()方法前服務已經被創建,多次調用startService()方法并不會導致多次創建服務,但會導致多次調用onStart()方法。采用startService()方法啟動的服務,只能調用Context.stopService()方法結束服務,服務結束時會調用onDestroy()方法。    如果打算采用Context.bindService()方法啟動服務,在服務未被創建時,系統會先調用服務的onCreate()方法,接著調用onBind()方法。這個時候調用者和服務綁定在一起,調用者退出了,系統就會先調用服務的onUnbind()方法,接著調用onDestroy()方法。如果調用bindService()方法前服務已經被綁定,多次調用bindService()方法并不會導致多次創建服務及綁定(也就是說onCreate()和onBind()方法并不會被多次調用)。如果調用者希望與正在綁定的服務解除綁定,可以調用unbindService()方法,調用該方法也會導致系統調用服務的onUnbind()-->onDestroy()方法.

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 稻城县| 宁德市| 牙克石市| 鹤峰县| 庆元县| 孟村| 雷波县| 泊头市| 自贡市| 玛沁县| 临城县| 大港区| 喀喇| 林周县| 苏尼特右旗| 新巴尔虎右旗| 山阳县| 广南县| 兴仁县| 孟州市| 平山县| 于都县| 湾仔区| 米林县| 东乡县| 平舆县| 邢台市| 锦州市| 寿宁县| 公安县| 蒙自县| 清远市| 比如县| 安达市| 溧阳市| 西林县| 南康市| 东兰县| 桐柏县| 德州市| 楚雄市|