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