為什么要用Service

對(duì)于Service,看了很多遍相應(yīng)的demo代碼,但是項(xiàng)目中從來沒有用過,貌似也沒有什么功能非要用到service.

但是Service既然存在,就一定有存在的道理。

轉(zhuǎn):
Android Service完全解析,關(guān)于服務(wù)你所需知道的一切(上)
Android Service完全解析,關(guān)于服務(wù)你所需知道的一切(下)


由此證實(shí)了Service確實(shí)是運(yùn)行在主線程里的,也就是說如果你在Service里編寫了非常耗時(shí)的代碼,程序必定會(huì)出現(xiàn)ANR的。

你可能會(huì)驚呼,這不是坑爹么?。磕俏乙猄ervice又有何用呢?其實(shí)大家不要把后臺(tái)和子線程聯(lián)系在一起就行了,這是兩個(gè)完全不同的概念。Android的后臺(tái)就是指,它的運(yùn)行是完全不依賴UI的。即使Activity被銷毀,或者程序被關(guān)閉,只要進(jìn)程還在,Service就可以繼續(xù)運(yùn)行。比如說一些應(yīng)用程序,始終需要與服務(wù)器之間始終保持著心跳連接,就可以使用Service來實(shí)現(xiàn)。你可能又會(huì)問,前面不是剛剛驗(yàn)證過Service是運(yùn)行在主線程里的么?在這里一直執(zhí)行著心跳連接,難道就不會(huì)阻塞主線程的運(yùn)行嗎?當(dāng)然會(huì),但是我們可以在Service中再創(chuàng)建一個(gè)子線程,然后在這里去處理耗時(shí)邏輯就沒問題了。

額,既然在Service里也要?jiǎng)?chuàng)建一個(gè)子線程,那為什么不直接在Activity里創(chuàng)建呢?這是因?yàn)锳ctivity很難對(duì)Thread進(jìn)行控制,當(dāng)Activity被銷毀之后,就沒有任何其它的辦法可以再重新獲取到之前創(chuàng)建的子線程的實(shí)例。而且在一個(gè)Activity中創(chuàng)建的子線程,另一個(gè)Activity無法對(duì)其進(jìn)行操作。但是Service就不同了,所有的Activity都可以與Service進(jìn)行關(guān)聯(lián),然后可以很方便地操作其中的方法,即使Activity被銷毀了,之后只要重新與Service建立關(guān)聯(lián),就又能夠獲取到原有的Service中Binder的實(shí)例。因此,使用Service來處理后臺(tái)任務(wù),Activity就可以放心地finish,完全不需要擔(dān)心無法對(duì)后臺(tái)任務(wù)進(jìn)行控制的情況。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評(píng)論 25 709
  • 原文地址:Android Service完全解析,關(guān)于服務(wù)你所需知道的一切(上) 相信大多數(shù)朋友對(duì)Service這...
    AiPuff閱讀 4,304評(píng)論 11 98
  • 文/餃子 昨日,微信朋友圈被江寧一則尋人啟事刷屏,一名七個(gè)月大嬰兒早上被奶奶抱出散步后失聯(lián),家人焦急難耐。...
    零零一餃子閱讀 301評(píng)論 0 1
  • 圖文/左翎 就像一湖洞庭的水緩緩漫過心上,清冽卻有一絲徹骨的寂寥;就像一縷柔和的風(fēng)拂過臉頰,溫暖卻又撩撥心弦。民謠...
    左翎閱讀 604評(píng)論 4 5
  • 家里兩個(gè)孩子的性格完全不同,大力文弱溫和,內(nèi)心倔強(qiáng),小悠活潑好動(dòng),爭(zhēng)強(qiáng)好勝。鄰居們都說倆娃性格長(zhǎng)反了,調(diào)個(gè)個(gè)就好了...
    芳老頭閱讀 200評(píng)論 0 0

友情鏈接更多精彩內(nèi)容