Android 四大组件 —— 服务
一、服務是什么
????????服務(Service)是Android?中實現程序后臺運行的解決方案,它非常適合用于去執行那些不需要和用戶交互而且還要求長期運行的任務。服務的運行不依賴于任何用戶界面,即使當程序被切換到后臺,或者用戶打開了另外一個應用程序,服務仍然能夠保持正常運行。
?????? 不過需要注意的是,服務并不是運行在一個獨立的進程當中的,而是依賴于創建服務時所在的應用程序進程。當某個應用程序進程被殺掉時,所有依賴于該進程的服務也會停止運行。
??????另外,也不要被服務的后臺概念所迷惑,實際上服務并不會自動開啟線程,所有的代碼都是默認運行在主線程當中的。也就是說,我們需要在服務的內部手動創建子線程,并在這里執行具體的任務,否則就有可能出現主線程被阻塞住的情況。
?
二、服務的基本用法
?????? 了解了Android 多線程編程的技術之后,下面就讓我們進入到本章的正題,開始對服務的相關內容進行學習。作為Android 四大組件之一,服務也少不了有很多非常重要的知識點,那我們自然要從最基本的用法開始學習了。
1 、定義一個服務
?????? 首先看一下如何在項目中定義一個服務。新建一個ServiceTest 項目,然后在這個項目中新增一個名為MyService 的類,并讓它繼承自Service,完成后的代碼如下所示
[java]?view plaincopy?????? 目前MyService 中可以算是空空如也,但有一個onBind()方法特別醒目。這個方法是Service 中唯一的一個抽象方法,所以必須要在子類里實現。我們會在后面的小節中使用到onBind()方法,目前可以暫時將它忽略掉。
?????? 既然是定義一個服務,自然應該在服務中去處理一些事情了,那處理事情的邏輯應該寫在哪里呢?這時就可以重寫Service 中的另外一些方法了,如下所示:
[java]?view plaincopy?????? 可以看到,這里我們又重寫了onCreate()、onStartCommand()和onDestroy()這三個方法,它們是每個服務中最常用到的三個方法了。其中onCreate()方法會在服務創建的時候調用,onStartCommand()方法會在每次服務啟動的時候調用,onDestroy()方法會在服務銷毀的時候調用。
?????通常情況下,如果我們希望服務一旦啟動就立刻去執行某個動作,就可以將邏輯寫在onStartCommand()方法里。而當服務銷毀時,我們又應該在onDestroy()方法中去回收那些不再使用的資源。
?????另外需要注意,每一個服務都需要在AndroidManifest.xml 文件中進行注冊才能生效,不知道你有沒有發現,這是Android 四大組件共有的特點。于是我們還應該修改AndroidManifest.xml文件,代碼如下所示:
[java]?view plaincopy這樣的話,就已經將一個服務完全定義好了。
?
2、啟動和停止一個服務
我們在布局文件中加入了兩個按鈕,分別是用于啟動服務和停止服務的。然后修改MainActivity 中的代碼,如下所示:
[java]?view plaincopy?
我們如何才能證實服務已經成功啟動或者停止了呢?最簡單的方法就是在MyService 的幾個方法中加入打印日志,可以看到我們在MyService中已經加入了。
下面我們看一下運行效果:
開啟服務后,LogCat中打印
關閉服務后,LogCat 中打印:
總結
以上是生活随笔為你收集整理的Android 四大组件 —— 服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Control Flash 更新AB
- 下一篇: RS232和RS485的协议原理及应用