Android服務Service具體解釋(做用,生命週期,AIDL)系列文章-爲何需要服務呢?

Android服務Service具體解釋(做用,生命週期,AIDL)


近期沉迷於上班,沒有時間寫博客了。解衣入睡,未眠。隨起牀寫一篇博客壓壓驚!




##咱們android系統爲何需要服務Service呢?

在某些場景下。咱們需要應用程序長期在後臺跑着。對吧!但是呢,咱們的應用已經退到後臺了。html

比方說。咱們的播放音樂,咱們但願可以退到後臺之後,還可以屁顛屁顛地繼續播放是吧。也許,你會說,咱們起一會兒線程播放,即便咱們退出了應用,這個線程仍是在跑的呀。也就是說,開啓一個子線程。也可以沒有界面地在後臺跑嘛!

那麼。咱們先要了解一下在android系統下各進程的優先級了!android

先來看幾個專有名詞吧:

post

  • 前臺進程:你可以看到應用的界面,並且可以和它交互。這就是前臺進程啦!

  • 可視進程:你可以看到這個進程。但是不可以操做,這也是和前臺進程的差異。就是不可以操做。

  • 服務進程:長期於後臺運行。沒有界面也在跑的進程就叫作服務進程啦。
  • 後臺進程:所謂的後臺進程就是程序最小化,本質上是沒有退出的。
  • 空進程:程序程序的組件沒有不論什麼的活動,也就是掛了嘛!




知道了前面的幾大專用名詞。咱們要知道的是內存的大小是有限制的。也就是設備的大小是有限的。android操做系統需要合理地管理這些資源,依據優先級。保證用戶可以使用等等。因此需要對這些進程進行一個優先級排列,當資源不夠用的時候呢,就會去殺掉,或者說清空低級別的進程。

因此有了:

前臺進程>可視進程>服務進程>後臺進程>空進程

好,當你看到這裏的時候,咱們回到前面的。開一個子線程。運行一些沒有界面也不會退出的任務。那麼咱們這樣去操做:開啓一個子線程之後。我直接最小化,這個程序,它是否是就變成了一個後臺進程呢?對吧,當資源不夠用的時候。它呢就把這個後臺進程殺死。並且,這個子線程不再會起來了。

但是,服務不同,首先,比後臺進程的優先級高。因此不那麼easy殺死,另外,服務真的因爲資源不夠而被殺死了。等到資源釋放夠了,或者其它東西運行完了,夠資源了,服務又本身主動地跑起來了!



因此說,咱們爲何要用服務呢?

兩點緣由:
spa

  • 服務可以長期在後臺運行,即便沒有界面,優先級比較高,不easy被殺死。
  • 即便服務被殺死了,也可以本身主動地被操做系統啓動起來。

網易雲視頻:操作系統



社區站點:線程

相關文章
相關標籤/搜索