IntentService與Service的區(qū)別

IntentService是繼承并處理異步請(qǐng)求的一個(gè)類社牲,在IntentService內(nèi)有一個(gè)工作線程來處理耗時(shí)操作搏恤,啟動(dòng)IntentService的方式和啟動(dòng)傳統(tǒng)的Service一樣湃交,同時(shí),當(dāng)任務(wù)執(zhí)行完后痛阻,IntentService會(huì)自動(dòng)停止腮敌,而不需要我們手動(dòng)去控制或stopSelf()糜工。另外,可以啟動(dòng)IntentService多次油坝,而每一個(gè)耗時(shí)操作會(huì)以工作隊(duì)列的方式在IntentService的onHandleIntent回調(diào)方法中執(zhí)行刨裆,并且,每次只會(huì)執(zhí)行一個(gè)工作線程瞬女,執(zhí)行完第一個(gè)再執(zhí)行第二個(gè)努潘,以此類推。


先來看一下IntentService類的源碼:

publicvoid onCreate() {

? ? ? ? // TODO: It would be nice to have an option to hold a partial wakelock

? ? ? ? // during processing, and to have a static startService(Context, Intent)

? ? ? ? // method that would launch the service & hand off a wakelock.super.onCreate();

? ? ? ? HandlerThread thread =newHandlerThread("IntentService[" + mName + "]");

? ? ? ? thread.start(); //開啟一個(gè)工作線程? ? ? ? mServiceLooper = thread.getLooper();//單獨(dú)的消息隊(duì)列mServiceHandler =new ServiceHandler(mServiceLooper);

}



定義一個(gè)IntentService的子類:

publicclassMIntentServiceextends IntentService {

? ? public MIntentService(){

? ? ? ? super("MIntentService");

? ? }

? ? /**? ? * Creates an IntentService.? Invoked by your subclass's constructor.

? ? * @param name Used to name the worker thread, important only for debugging.

? ? */public MIntentService(String name) {

? ? ? ? super(name);

? ? }

? ? @Override

? ? publicvoid onCreate() {

? ? ? ? Log.e("MIntentService--", "onCreate");

? ? ? ? super.onCreate();

? ? }

? ? @Override

? ? publicintonStartCommand(Intent intent,intflags,int startId) {

? ? ? ? Log.e("MIntentService--", "onStartCommand");

? ? ? ? returnsuper.onStartCommand(intent, flags, startId);

? ? }

? ? @Override

? ? protectedvoid onHandleIntent(Intent intent) {

? ? ? ? Log.e("MIntentService--", Thread.currentThread().getName() + "--" + intent.getStringExtra("info") );

? ? ? ? for(inti = 0; i < 100; i++){//耗時(shí)操作Log.i("onHandleIntent--",? i + "--" + Thread.currentThread().getName());

? ? ? ? }

? ? }

? ? @Override

? ? publicvoid onDestroy() {

? ? ? ? Log.e("MIntentService--", "onDestroy");

? ? ? ? super.onDestroy();

? ? }

}


開啟IntentService服務(wù):

publicvoid intentClick(View v){

? ? ? ? Intent intent =newIntent(this, MIntentService.class);

? ? ? ? intent.putExtra("info", "good good study");

? ? ? ? startService(intent);

}


點(diǎn)擊按鈕之后輸出結(jié)果為(過濾log.e):

10-25 16:54:58.852? 27135-27135/com.example.lenovo.myintentservicedemo E/MIntentService--﹕ onCreate10-25 16:54:58.852? 27135-27135/com.example.lenovo.myintentservicedemo E/MIntentService--﹕ onStartCommand10-25 16:54:58.856? 27135-27354/com.example.lenovo.myintentservicedemo E/MIntentService--﹕IntentService[MIntentService]--good good study10-25 16:54:58.879? 27135-27135/com.example.lenovo.myintentservicedemo E/MIntentService--﹕ onDestroy

 Intent服務(wù)開啟后压怠,執(zhí)行完onHandleIntent里面的任務(wù)就自動(dòng)銷毀結(jié)束,通過打印的線程名稱可以發(fā)現(xiàn)是新開了一個(gè)線程來處理耗時(shí)操作的蜗顽,即是耗時(shí)操作也可以被這個(gè)線程管理和執(zhí)行,同時(shí)不會(huì)產(chǎn)生ANR的情況羽利。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刊懈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匾浪,更是在濱河造成了極大的恐慌卷哩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冷溶,死亡現(xiàn)場(chǎng)離奇詭異逞频,居然都是意外死亡栋齿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門基协,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澜驮,“玉大人刨疼,你說我怎么就攤上這事。” “怎么了扮休?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵玷坠,是天一觀的道長(zhǎng)劲藐。 經(jīng)常有香客問我樟凄,道長(zhǎng),這世上最難降的妖魔是什么汰现? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任瞎饲,我火速辦了婚禮,結(jié)果婚禮上炼绘,老公的妹妹穿的比我還像新娘俺亮。我一直安慰自己,他們只是感情好脚曾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布斟珊。 她就那樣靜靜地躺著,像睡著了一般旨椒。 火紅的嫁衣襯著肌膚如雪堵漱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天示惊,我揣著相機(jī)與錄音愉镰,去河邊找鬼。 笑死丈探,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的塘秦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼尊剔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼须误!你這毒婦竟也來了搔预?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤历造,失蹤者是張志新(化名)和其女友劉穎船庇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臣淤,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邑蒋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年按厘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卿堂。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡草描,死狀恐怖策严,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情享钞,我是刑警寧澤诀蓉,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布暑脆,位于F島的核電站添吗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碟联。R本人自食惡果不足惜僵腺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一辰如、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧琉兜,春花似錦、人聲如沸豌蟋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幌氮。三九已至,卻和暖如春贯涎,著一層夾襖步出監(jiān)牢的瞬間慢洋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工败明, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留太防,地道東北人酸员。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓幔嗦,卻偏偏與公主長(zhǎng)得像沥潭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子汇恤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容