Android Services—基礎

來源:互聯網
上載者:User

要建立一個服務,你必須建立一個Service類(或一個既存的Service子類)的子類。在你的實現中,你需要重寫一些處理服務生命週期關鍵特徵的回調方法,並且給組件提供一種合適的綁定服務的機制。需要重寫的重要的回調方法如下:

onStartCommand()

當一個組件通過調用startService()方法請求啟動一個服務時,系統會調用這個服務的onStartCommand()方法。一旦這個方法執行了,那麼這個服務就被啟動,並且在後台無限期的運行。如果你實現了這個方法,當服務的工作結束時,你有責任通過調用stopSelf()方法或stopService()方法來終止服務。(如果你只想讓服務提供綁定的能力,你不需要實現這個方法。)

onBind()

當一個組件想通過調用bindService()方法跟這個服務(如執行RPC)綁定時,系統會調用這個方法。在這個方法的實現中,你必須通過返回一個IBinder對象給客戶提供一個使用者跟服務進行互動的介面。你必須實現這個方法,但是如果你不允許綁定,那麼這個方法應該返回null。

onCreate()

當服務被第一次建立時,系統會調用這個方法來執行一次安裝過程(它在onStartCommand()或onBind()方法之前調用)。如果服務正在運行,這個方法就不會被調用。

onDestroy()

當服務不再使用或正在銷毀時,系統會調用這個方法。你的服務應該使用這個方法來實現一些清理資源的工作,如清理線程、被註冊的監聽器、接受器等。這是服務能夠接受的最後的調用。

如果組件通過調用startService()方法啟動服務,那麼這個服務就會一直運行到它自己用stopSelf()方法終止服務,或另一個組件通過調用stopService()方法來終止它。

如果一個組件調用bindService()方法來建立這個服務(並且不調用onStartCommand()方法),那麼這個服務只跟綁定的組件運行同樣長的時間。一旦這個從所有的用戶端解除綁定,系統就會銷毀它。

Android系統只有在記憶體不足和必須給有使用者焦點的Activity回收系統資源時,才會強制終止一個服務。如果服務是被一個有使用者焦點的Activity綁定的,那麼它不可能被殺死,並且如果這個服務被聲明運行在前台(稍後討論),那麼它也幾乎不能被殺死。否則如果這個服務被啟動並且長時間運行,那麼隨著時間的推移系統會降低它在背景工作列表中位置,並且這個服務將很容易被殺死---如果你的服務被啟動了,那麼你必須把它設計成能夠通過系統能夠妥善的重啟。如果系統殺死了你的服務,那麼一旦資源變為有效它就會重啟(雖然這也依賴從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.