并發(fā)編程的藝術(shù)》 —3 Java內(nèi)存模型">《Java并發(fā)編程的藝術(shù)》 —3 Java內(nèi)存模型
997
2025-04-03
startService第一次啟動會調(diào)用onCreate,onCreate只會在創(chuàng)建的時(shí)候調(diào)用一次,之后多次啟動會多次調(diào)用onStartCommand。stopService會停止Service,多次調(diào)用stopService不會報(bào)錯。
bindService第一次啟動會依次調(diào)用onCreate->onBind->onServiceConnected。多次調(diào)用bindService,?onBind和onServiceConnected都不會多次回調(diào)。多次調(diào)用unBindService會報(bào)錯。
START_STICKY:如果service進(jìn)程被kill掉,保留service的狀態(tài)為開始狀態(tài),但不保留遞送的intent對象。隨后系統(tǒng)會嘗試重新創(chuàng)建service,由于服務(wù)狀態(tài)為開始狀態(tài),所以創(chuàng)建服務(wù)后一定會調(diào)用onStartCommand(Intent,int,int)方法。如果在此期間沒有任何啟動命令被傳遞到service,那么參數(shù)Intent將為null。
START_NOT_STICKY:“非粘性的”。使用這個返回值時(shí),如果在執(zhí)行完onStartCommand后,服務(wù)被異常kill掉,系統(tǒng)不會自動重啟該服務(wù)。
START_REDELIVER_INTENT:重傳Intent。使用這個返回值時(shí),如果在執(zhí)行完onStartCommand后,服務(wù)被異常kill掉,系統(tǒng)會自動重啟該服務(wù),并將Intent的值傳入。
START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保證服務(wù)被kill后一定能重啟。
服務(wù)在其托管進(jìn)程的主線程中運(yùn)行的
開啟服務(wù)的組件退出之后,服務(wù)還是可以在后臺長期運(yùn)行的。其他組件可以調(diào)用stopService(Intent)或者自身調(diào)用stopSelf停止
組件不能調(diào)用服務(wù)里面的方法
組件銷毀后服務(wù)自動被銷毀,如果一個Service被多個組件綁定,只有所有的組件被銷毀這個服務(wù)才會銷毀
組件可以調(diào)用服務(wù)里面的方法
同時(shí)調(diào)用stopService和unbindService才可以回調(diào)onDestory
都運(yùn)行在主線程
使用Intent,onStartCommand時(shí)候傳入的Intent
BroadcastReceiver,Service發(fā)送,Activity接收
接口回調(diào)
共享硬盤存儲,共享內(nèi)存
ServiceConnection
獲取系統(tǒng)Service一般用getSystemService方法。常見的Service有
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
ActivityManagerService
PackageManagerService
WindowManagerService
不能。因?yàn)榉?wù)在其托管進(jìn)程的主線程中運(yùn)行,它既不創(chuàng)建自己的線程,也不在單獨(dú)的進(jìn)程中運(yùn)行(除非另行指定)。它不可以做密集耗時(shí)的操作。如果非要做的話,可以啟動一個新的線程來工作。
前臺服務(wù)被認(rèn)為是用戶主動意識到的一種服務(wù),因此在內(nèi)存不足時(shí),系統(tǒng)也不會考慮將其終止。 前臺服務(wù)必須為狀態(tài)欄提供通知,放在“正在進(jìn)行”標(biāo)題下方,這意味著除非服務(wù)停止或從前臺移除,否則不能清除通知。
要請求讓服務(wù)運(yùn)行于前臺,請調(diào)用?startForeground()。此方法采用兩個參數(shù):唯一標(biāo)識通知的整型數(shù)和狀態(tài)欄的 Notification。
相互喚起,需要借助其他APP
service 相互使用廣播喚起 (雞肋)
和手機(jī)商合作 (最高效)
設(shè)置 service 等級,priority (雞肋)
onStartCommand方法,返回 START_STICKY,內(nèi)存充足的時(shí)候會重啟 (雞肋)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。