Android四大組件:Service服務史上最全面解析


前言

  • Service作為Android四大組件之一,應用非常廣泛
  • 本文將介紹對Service進行全面介紹(基礎認識、生命週期、使用和應用場景)

目錄


目錄

1. 基礎知識

  • 定義:服務,屬於Android中的計算型組件
  • 作用:提供需要在後臺長期運行的服務(如複雜計算、下載等等)
  • 特點:長生命週期的、沒有用戶界面、在後臺運行

2. 生命週期方法詳解

具體請看我寫的文章:Android:Service生命週期最全面解析


3. Service分類

3.1 Service的類型


分類

3.2 詳細介紹


Service類型的詳細介紹

4. Service的使用解析

由上述可知,服務Service總共分為:


分類

接下來,我將介紹每種Service的具體使用,具體請看我寫的文章:Android:(本地、可通信的、前臺、遠程)Service使用全面介紹

5. 使用場景

  • 通過上述描述,你應該對Service類型及其使用非常瞭解;
  • 那麼,我們該什麼時候用哪種類型的Service呢?
  • 各種Service的使用場景請看下圖:

    使用場景

6. 其他思考

6.1 Service和Thread的區別

  • 結論:Service和Thread之間沒有任何關係
  • 之所以有不少人會把它們聯繫起來,主要因為Service的後臺概念

    後臺的定義:後臺任務運行完全不依賴UI,即使Activity被銷燬,或者程序被關閉,只要進程還在,後臺任務就可以繼續運行

  • 其實二者存在較大的區別,如下圖:


    Paste_Image.png

一般來說,會將Service和Thread聯合著用,即在Service中再創建一個子線程(工作線程)去處理耗時操作邏輯,如下代碼:

@Override  
public int onStartCommand(Intent intent, int flags, int startId) {  
//新建工作線程
    new Thread(new Runnable() {  
        @Override  
        public void run() {  
            // 開始執行後臺任務  
        }  
    }).start();  
    return super.onStartCommand(intent, flags, startId);  
}  

class MyBinder extends Binder {
public void service_connect_Activity() {
//新建工作線程 new Thread(new Runnable() {
@Override
public void run() {
// 執行具體的下載任務 }
}).start();
}

}

6.2 Service和IntentService的區別

具體請看我寫的文章:Android多線程全面解析:IntentService用法&源碼


7.總結


請點贊!因為你們的贊同/鼓勵是我寫作的最大動力!

相關文章閱讀
Android開發:最全面、最易懂的Android屏幕適配解決方案
Android開發:Handler異步通信機制全面解析(包含Looper、Message Queue)
Android開發:最全面、最易懂的Webview詳解
Android開發:JSON簡介及最全面解析方法!
Android開發:頂部Tab導航欄實現(TabLayout+ViewPager+Fragment)
Android開發:底部Tab菜單欄實現(FragmentTabHost+ViewPager)



书籍推荐