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