国产探花免费观看_亚洲丰满少妇自慰呻吟_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()方法.

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 齐河县| 兴海县| 安顺市| 老河口市| 镇沅| 锦屏县| 汪清县| 吉木萨尔县| 将乐县| 舞阳县| 韶山市| 泾阳县| 扎囊县| 石家庄市| 涿鹿县| 荥阳市| 庆元县| 科技| 保山市| 东海县| 陇南市| 阳江市| 景东| 新野县| 金寨县| 紫金县| 贞丰县| 石泉县| 札达县| 泸州市| 陆河县| 原平市| 礼泉县| 武平县| 莎车县| 晋江市| 周宁县| 亳州市| 建阳市| 阜新市| 襄垣县|