一、Service的生命周期(onCreate onStart onDestroy onBind )
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都網(wǎng)站設計、網(wǎng)站制作、鑲黃網(wǎng)絡推廣、小程序定制開發(fā)、鑲黃網(wǎng)絡營銷、鑲黃企業(yè)策劃、鑲黃品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供鑲黃建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:m.2m8n56k.cn
1). 被啟動的服務的生命周期:如果一個Service被某個Activity 調用 Context.startService 方法啟動,那么不管是否有Activity使用bindService綁定或unbindService解除綁定到該Service,該Service都在后臺運行。如果一個Service被startService 方法多次啟動,那么onCreate方法只會調用一次,onStart將會被調用多次(對應調用startService的次數(shù)),并且系統(tǒng)只會創(chuàng)建Service的一個實例(因此你應該知道只需要一次stopService調用)。該Service將會一直在后臺運行,而不管對應程序的Activity是否在運行,直到被調用stopService,或自身的stopSelf方法。當然如果系統(tǒng)資源不足,android系統(tǒng)也可能結束服務。
2). 被綁定的服務的生命周期:如果一個Service被某個Activity 調用 Context.bindService 方法綁定啟動,不管調用 bindService 調用幾次,onCreate方法都只會調用一次,同時onStart方法始終不會被調用。當連接建立之后,Service將會一直運行,除非調用Context.unbindService 斷開連接或者之前調用bindService 的 Context 不存在了(如Activity被finish的時候),系統(tǒng)將會自動停止Service,對應onDestroy將被調用。
3). 被啟動又被綁定的服務的生命周期:如果一個Service又被啟動又被綁定,則該Service將會一直在后臺運行。并且不管如何調用,onCreate始終只會調用一次,對應startService調用多少次,Service的onStart便會調用多少次。調用unbindService將不會停止Service,而必須調用 stopService 或 Service的 stopSelf 來停止服務。
4). 當服務被停止時清除服務:當一個Service被終止(1、調用stopService;2、調用stopSelf;3、不再有綁定的連接(沒有被啟動))時,onDestroy方法將會被調用,在這里你應當做一些清除工作,如停止在Service中創(chuàng)建并運行的線程。
二、外界與服務通信
在MainActivity里,獲取數(shù)據(jù)放入intent里,然后啟動服務
在Service里如何獲取MainActivity里的數(shù)據(jù)呢?由于Service被啟動后,會執(zhí)行onStartCommand方法,所以我們重寫這個方法,用intent接收數(shù)據(jù)
三、綁定Service通信(bindSerivce->onCreate->onBind->running->onUnbind->onDestroy)
1)在MainActivity里通過bindService執(zhí)行綁定
bindService(new Intent(this,MyService.class),this, Context.BIND_AUTO_CREATE);
2)執(zhí)行這個函數(shù)的時候MyService中的onCreate函數(shù)執(zhí)行,然后執(zhí)onBind函數(shù),重寫該方法。該方法返回了一個iBinder,iBander是一個接口,方法里要返回一個實例,我們需要再寫一個類繼承安卓系統(tǒng)Binder類
3)iBander實例通過MainActivity的bindService的this調用onServiceConnected函數(shù)來接收
4)在MainActivity中的binder來調用MyService中setData方法來傳輸數(shù)據(jù),完成和service的通信
binder.setData(edt.getText().toString());
名稱欄目:【學習筆記】Android中Service通信
本文鏈接:http://m.2m8n56k.cn/article34/pchpse.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、電子商務、品牌網(wǎng)站建設、網(wǎng)站內鏈、虛擬主機、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)