首頁(yè)技術(shù)文章正文

Android+物聯(lián)網(wǎng)培訓(xùn)實(shí)戰(zhàn)教程之Android下service詳解

更新時(shí)間:2017-05-31 來(lái)源:黑馬程序員Android+物聯(lián)網(wǎng)培訓(xùn)學(xué)院 瀏覽量:

什么是Service服務(wù)
Service是android四大組件之一,沒(méi)有顯示的頁(yè)面,在每一個(gè)應(yīng)用程序戰(zhàn)功扮演這非常重要的角色。主要用于在后臺(tái)處理一些耗時(shí)的邏輯操作,或者去執(zhí)行某些需要長(zhǎng)期運(yùn)行的任務(wù),必要的時(shí)候我們可以在程序退出的時(shí)候,還讓service在后臺(tái)繼續(xù)的保持運(yùn)行狀態(tài)。
服務(wù)的開(kāi)啟方式
1.     startService();
2.     bindService();
服務(wù)的生命周期
·         如果是startService,那么的它的生命周期是:
1.     onCreate()--> onStartCommand() --> onStart() -->onDestroy();
2.     .服務(wù)只會(huì)被創(chuàng)建一次,多次調(diào)用startService,不會(huì)多次調(diào)用onCreate()方法, 
會(huì)執(zhí)行onStartCommand() --> onStart() --> onDestory()方法;
3.     一旦服務(wù)開(kāi)啟,就于調(diào)用者無(wú)關(guān),即使Activity銷毀了,服務(wù)依然存在進(jìn)程中;
4.     外界不可以調(diào)用服務(wù)里面的方法
 
·         如果是bindService,那么它的生命周期是:
1.     onCreate() --> onBindService() --> onUnBindService() --> onDestory();
2.     服務(wù)可以被綁定一次,一旦綁定成功,就不可多次綁定,否則就回解綁失敗
3.     bind方式,只可以解綁一次,多次解綁,應(yīng)用程序會(huì)異常退出
4.     不求同生,但求同死,bind的服務(wù)和調(diào)用者的生命周期一致
5.     外界可以調(diào)用服務(wù)里面的方法
混合調(diào)用服務(wù)的生命周期處理
為了保證服務(wù)長(zhǎng)期在后臺(tái)運(yùn)行,同時(shí)又想調(diào)用服務(wù)里面的方法
startService()開(kāi)啟服務(wù)
bindService()調(diào)用服務(wù)里面的方法
unBindService()解綁服務(wù)
stopService結(jié)束服務(wù)
開(kāi)啟服務(wù)的缺點(diǎn)
無(wú)法使用服務(wù)里面的方法
bind服務(wù)步驟,以及調(diào)用服務(wù)里面的方法
1.綁定方式開(kāi)啟服務(wù)
bindService(intentService,ServiceConnection,BIND_AUTO_CREATE);
2.服務(wù)內(nèi)部需要定義一個(gè)服務(wù)的代理類
MyBinder extends Binder{
    public Service getService(){
        return Service.this;       
    }

3.返回IBinder對(duì)象
 public IBinder onBind(Intent intent) {
    return new MyBinder();
}
4.實(shí)現(xiàn)ServiceConnection服務(wù)里面的方法
  private class MyServieConnection implements ServiceConnection {
 
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        IService.MyBinder binder = (IService.MyBinder) service;
        mIService = binder.getService();
 
    }
 
    @Override
    public void onServiceDisconnected(ComponentName name) {
 
    }
}
5.調(diào)用服務(wù)里面的方法
mIService.methed();
綁定服務(wù)的常見(jiàn)應(yīng)用
·         提供一個(gè)服務(wù),后臺(tái)運(yùn)行,里面有一些公共的邏輯供調(diào)用. 
1.音樂(lè)播放器,在服務(wù)里面提供上一曲,下一曲,播放,暫停等 
2.qq,微信接收離線消息


本文版權(quán)歸黑馬程序員Android培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員Android+物聯(lián)網(wǎng)培訓(xùn)學(xué)院
首發(fā):http://Android.itheima.com
分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!