Service服務(wù)
Service是一種在后臺長期運行的,沒有界面的組件,由其他組件調(diào)用開始運行;
服務(wù)不太會被kill,即使在內(nèi)存不足時被kill,當(dāng)內(nèi)存恢復(fù)時,服務(wù)會自動復(fù)活,例如下載就可以放入服務(wù)中來做,下載時,啟動服務(wù),完成時,關(guān)閉服務(wù);
1、創(chuàng)建與使用Service
1)、定義類繼承Service,清單文件中聲明,同樣也可以配置意圖過濾;
2)、使用Intent來開啟Service,在其他組件中調(diào)用startService方法;
3)、停止Service,調(diào)用stopService方法;
2、生命周期
Service中的生命周期方法(Context調(diào)用執(zhí)行):
1)startService()如果沒創(chuàng)建就先onCreate()再startCommand(),如果已創(chuàng)建就只執(zhí)行startCommand();
2)stopService()執(zhí)行onDestroy()
3)bindService()如果沒有創(chuàng)建就先onCreate()再onBind()
4)unbindService()如果服務(wù)是在綁定時啟動的,先執(zhí)行onUnbind()再執(zhí)行onDestroy().如果服務(wù)在綁定前已啟動,那么只執(zhí)行onUnbind();
3、開啟服務(wù)的2種方式
2種不同開啟方式的區(qū)別:
1)startService:
開啟服務(wù),服務(wù)一旦開啟,就長期就后臺運行,即使調(diào)用者退出來,服務(wù)還會長期運行;
資源不足時,被殺死,資源足夠時,又會復(fù)活;
2)bindService:
綁定服務(wù),綁定服務(wù)的生命周期會跟調(diào)用者關(guān)聯(lián)起來,調(diào)用者退出,服務(wù)也會跟著銷毀;
通過綁定服務(wù),可以間接的調(diào)用服務(wù)里面的方法(onBind返回IBinder);
4、服務(wù)混合調(diào)用生命周期
一般的調(diào)用順序:
①、start-> stop開啟–>結(jié)束
②、bind-> unbind綁定(服務(wù)開啟)->解綁(服務(wù)結(jié)束)
混合調(diào)用:
①、start –> bind -> stop->unbind->ondestroy通常不會使用這種模式
開啟–>綁定–>結(jié)束(服務(wù)停不了)->解除綁定(服務(wù)才可停掉)
②、start –>bind -> unbind -> stop經(jīng)常使用
開啟–>綁定–>解綁(服務(wù)繼續(xù)運行)-> stop(不用時,再停止服務(wù))
這樣保證了服務(wù)長期后臺運行,又可以調(diào)用服務(wù)中的方法