欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android里面的Service種類以及啟動方式

 更新時間:2025年02月14日 11:28:34   作者:雙魚大貓  
Android中的Service分為前臺服務(wù)和后臺服務(wù),前臺服務(wù)需要亮身份牌并顯示通知,后臺服務(wù)則有啟動方式選擇,包括startService和bindService,選擇啟動方式應(yīng)根據(jù)任務(wù)類型和場景進行,需要的朋友可以參考下

一句話總結(jié):

Service 是 Android 的“后臺打工人”,分兩種類型(前臺和后臺),兩種啟動方式(自己干、和人合作干),不同場景用不同姿勢。

一、Service 的兩種類型:

1. 前臺服務(wù)(必須亮身份牌)

  • 特點:必須顯示一個常駐通知(像外賣小哥穿著工服),告訴用戶“我正在后臺干活”,避免被系統(tǒng)干掉。

  • 適用場景

    • 音樂播放(顯示播放通知)。
    • 文件下載(顯示進度條)。
    • 定位跟蹤(如導(dǎo)航)。
  • 代碼示例

val notification = buildNotification() // 創(chuàng)建通知
startForeground(1, notification) // 變成前臺服務(wù)

2. 后臺服務(wù)(偷偷干活,但容易被抓)

  • 特點:沒有通知,默默干活,但 Android 8.0 之后限制嚴格(長時間后臺運行會被系統(tǒng)限制)。

  • 適用場景

    • 臨時任務(wù)(如數(shù)據(jù)同步)。
    • 輕量任務(wù)(如定時提醒)。
  • 注意:高版本 Android 中,后臺服務(wù)可能無法長期存活,建議改用 WorkManager 或 JobScheduler。

二、Service 的兩種啟動方式:

1. 獨立干活(startService)

  • 特點

    • 通過 startService() 啟動,Service 會一直運行,直到主動調(diào)用 stopSelf() 或其他組件調(diào)用 stopService()。
    • 生命周期onCreate() → onStartCommand() → (運行中) → onDestroy()。
  • 適用場景

    • 需要長期運行的任務(wù)(如播放音樂)。
    • 不依賴其他組件的獨立任務(wù)。
  • 代碼示例

// 啟動服務(wù)
val intent = Intent(this, MyService::class.java)
startService(intent)

// 停止服務(wù)
stopService(intent)

2. 和人合作干(bindService)

  • 特點

    • 通過 bindService() 啟動,Service 和組件(如 Activity)綁定,綁定解除后 Service 可能被銷毀。
    • 生命周期onCreate() → onBind() → (運行中) → onUnbind() → onDestroy()。
    • 可以通過 IBinder 接口實現(xiàn)組件和 Service 的雙向通信(比如控制音樂播放進度)。
  • 適用場景

    • 需要與界面交互的任務(wù)(如控制下載進度)。
    • 多個組件共享同一個 Service。
  • 代碼示例

// 綁定服務(wù)
val connection = object : ServiceConnection {
    override fun onServiceConnected(name: ComponentName?, binder: IBinder?) {
        // 獲取 Service 的接口,進行交互
    }
    override fun onServiceDisconnected(name: ComponentName?) {}
}
bindService(intent, connection, Context.BIND_AUTO_CREATE)

// 解綁服務(wù)
unbindService(connection)

三、混合模式(start + bind)

  • 特點

    • 先 startService() 讓 Service 長期運行,再 bindService() 進行交互。
    • 適用場景:音樂播放器(長期播放 + 界面控制進度)。
  • 銷毀條件:必須同時調(diào)用 stopService() 和 unbindService() 才會銷毀。

四、IntentService(已過時,但要知道)

  • 特點

    • 自帶工作線程,任務(wù)按順序執(zhí)行,干完活自動關(guān)閉。
    • Android 8.0 后受限,推薦改用 WorkManager 或 JobIntentService
  • 代碼示例

class MyIntentService : IntentService("MyIntentService") {
    override fun onHandleIntent(intent: Intent?) {
        // 在子線程執(zhí)行耗時任務(wù)
    }
}

五、如何選擇啟動方式?

場景啟動方式類型
長期任務(wù)(如音樂播放)startService()前臺服務(wù)
臨時交互(如下載控制)bindService()綁定服務(wù)
輕量后臺任務(wù)(如數(shù)據(jù)同步)WorkManager后臺服務(wù)替代

總結(jié)

  • 前臺服務(wù):要亮通知,適合用戶感知的任務(wù)。

  • 后臺服務(wù):盡量少用,高版本 Android 限制多。

  • 啟動方式

    • 獨立干:用 startService(),記得關(guān)。
    • 合作干:用 bindService(),綁定完記得解。
  • 口訣

    • “長期亮牌用前臺,臨時合作用綁定,高版本別硬杠,WorkManager 更穩(wěn)當”

以上就是Android里面的Service種類以及啟動方式的詳細內(nèi)容,更多關(guān)于Android Service種類及啟動的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決Android Studio4.1沒有Gsonfomat插件,Plugin “GsonFormat” is incompatible的問題

    解決Android Studio4.1沒有Gsonfomat插件,Plugin “GsonFormat” is inco

    這篇文章主要介紹了解決Android Studio4.1沒有Gsonfomat插件,Plugin “GsonFormat” is incompatible (supported only in IntelliJ IDEA)的問題 ,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-12-12
  • Android Handler消息機制分析

    Android Handler消息機制分析

    這篇文章主要介紹了Android Handler消息機制分析,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Android編程實現(xiàn)泡泡聊天界面實例詳解(附源碼)

    Android編程實現(xiàn)泡泡聊天界面實例詳解(附源碼)

    這篇文章主要介紹了Android編程實現(xiàn)泡泡聊天界面,結(jié)合實例形式較為詳細的分析了Android泡泡聊天界面的窗體定義與功能實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Android studio2.3.3升級到3.1.2坑(小記)

    Android studio2.3.3升級到3.1.2坑(小記)

    這篇文章主要介紹了Android studio2.3.3升級3.1.2坑(小記),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Android記事本項目開發(fā)

    Android記事本項目開發(fā)

    這篇文章主要為大家詳細介紹了Android記事本項目開發(fā)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android 5.0+ 屏幕錄制實現(xiàn)的示例代碼

    Android 5.0+ 屏幕錄制實現(xiàn)的示例代碼

    這篇文章主要介紹了Android 5.0+ 屏幕錄制實現(xiàn)的示例代碼,從 5.0 開始,系統(tǒng)提供給了 app 錄制屏幕的一系列方法,不需要 root 權(quán)限,只需要用戶授權(quán)即可錄屏,相對來說較為簡單,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android 出現(xiàn)的警告(Service Intent must be explicit)解決辦法詳解

    Android 出現(xiàn)的警告(Service Intent must be explicit)解決辦法詳解

    這篇文章主要介紹了Android 出現(xiàn)的警告(Service Intent must be explicit)解決辦法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Android Usb設(shè)備的監(jiān)聽(Dev)外設(shè)端口的判定以及耳機的插拔

    Android Usb設(shè)備的監(jiān)聽(Dev)外設(shè)端口的判定以及耳機的插拔

    今天小編就為大家分享一篇關(guān)于Android Usb設(shè)備的監(jiān)聽(Dev)外設(shè)端口的判定以及耳機的插拔,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Android WebView中圖片瀏覽及縮放效果

    Android WebView中圖片瀏覽及縮放效果

    這篇文章主要為大家詳細介紹了Android WebView中圖片瀏覽及縮放效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android利用MPAndroidChart繪制曲線圖表的基礎(chǔ)教程

    Android利用MPAndroidChart繪制曲線圖表的基礎(chǔ)教程

    最近在項目中要用到曲線圖,于是在網(wǎng)上找了很多很多,有AChartengine,MPAndroidChart,helloChart等等,我還用過基于html5的jsChart來做過,不過最終還是選擇了MPAndroidChart來做本文介紹了Android利用MPAndroidChart繪制曲線圖表的基礎(chǔ)教程,需要的朋友可以參考下。
    2018-03-03

最新評論