Android Service—終止服務

來源:互聯網
上載者:User

被啟動類型的服務必須管理它自己的生命週期。也就是說除非系統要回收系統記憶體,否則系統不會終止或銷毀這個服務,在onStartCommand()方法返回後,這個服務會繼續運行。因此而這種類型的服務必須通過調用stopSelf()方法或另一個組件通過調用stopService()方法才能終止。

一旦用stopSelf()方法或stopService()方法請求終止服務,那麼系統一有可能就會銷毀這個服務。

但是,如果你的服務同時處理多個對onStartCommand()方法的請求,那麼在你完成請求啟動過程時,不應該終止這個服務,因為你的服務可能正在接受一個新的啟動請求(在第一個請求結束時終止服務有可能會終止第二個請求)。要避免這個問題,你能夠使用stopSelf(int)方法來確保你請求終止的服務始終是基於最近啟動的請求。也就是說,調用stopSelf(int)方法時,你要把那個要終止的服務ID傳遞給這個方法(這個ID是發送給onStartCommand()方法的)。這樣如果服務在你調用stopSelf(int)方法之前收到了一個新的啟動請求,那麼這個ID就會因不匹配而不被終止。

警告:重要的是你的應用程式要在工作結束時終止它們的服務,從而避免浪費系統資源和電池電量。如果需要,其他的組件能夠調用stopService()方法終止服務。即使對於能夠綁定的服務,如果這個服務接收了對onStartCommand()方法的調用,你也必須自己來終止這個服務。

關於服務的生命週期的更多資訊,請看“管理服務的生命週期”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.