Service:服務(wù)哆料,四大組件之一缸剪,重要性不言而喻。
一:它有兩種注冊(cè)方法:
1.通過(guò)startServcie開(kāi)啟服務(wù)东亦,并不與Service進(jìn)行綁定
2.通過(guò)bindService綁定服務(wù)杏节,如果服務(wù)沒(méi)有開(kāi)啟,則自動(dòng)開(kāi)啟典阵。bindService可以使activity與Service進(jìn)行通信奋渔,通信的方法是在activity里創(chuàng)建一個(gè)ServiceConnection,里面獲得Binder對(duì)象
可以通過(guò)binder對(duì)象獲得Service返回的binder對(duì)象萄喳,從而進(jìn)行通信
二:提升優(yōu)先級(jí)
1.把它變成前臺(tái)Service
Notification notification = new Notification(R.drawable.ic_launcher,
"有通知到來(lái)", System.currefo(this, "這是通知的標(biāo)題", "這是通知的內(nèi)容",
pendingIntent)ntTimeMillis());
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
notification.setLatestEventIn;
startForeground(1, notification);
三.Service是運(yùn)行在主線程的卒稳,所以在service里面編寫(xiě)耗時(shí)的操作代碼,則會(huì)卡主線程會(huì)ANR他巨,所以Android里有個(gè)IntentService
IntentService充坑,如果很多個(gè)任務(wù)需要按順序執(zhí)行减江,需要放到服務(wù)中,那么使用IntentService
使用IntentService的好處有哪些捻爷。
首先辈灼,省去了手動(dòng)開(kāi)線程的麻煩;
第二也榄,不用手動(dòng)停止service巡莹;
第三,由于設(shè)計(jì)了工作隊(duì)列甜紫,可以啟動(dòng)多次---startService(),但是只有一個(gè)service實(shí)例和一個(gè)工作線程降宅。一個(gè)一個(gè)熟悉怒執(zhí)行
原理:使用HandlerThreader,獲得looper囚霸,通過(guò)Handler與子線程進(jìn)行通信