那麼究竟service怎麼使用呢?
老規矩,先來點基礎知識。
服務一般分為兩種:
1:本地服務,local service 用於應用程式內部。在service可以呼叫context.startservice()啟動,呼叫context.stopservice()結束。在內部可以呼叫service.stopself() 或 service.stopselfresult()來自己停止。無論呼叫了多少次startservice(),都只需呼叫一次stopservice()來停止。
2:遠端服務, remote service 用於android系統內部的應用程式之間。可以定義介面並把介面暴露出來,以便其他應用進行操作。客戶端建立到服務物件的連線,並通過那個連線來呼叫服務。呼叫context.bindservice()方法建立連線,並啟動,以呼叫 context.unbindservice()關閉連線。多個客戶端可以繫結至同乙個服務。如果服務此時還沒有載入,bindservice()會先載入它。
提供給可被其他應用復用,比如定義乙個天氣預報服務,提供與其他應用呼叫即可。
那麼先來看service的生命週期吧:如圖:
--呼叫context.stopservice() ->ondestroy()
context.bindservice()->oncreate()->onbind()
->service running
--呼叫》onunbind() ->
ondestroy() 從上訴可以知道分別對應本地的,,以及遠端的,也對應不同的方式啟動這個服務。
package com.dongzi;我們可以從上面知道import android.content.intent;
import android.media.mediaplayer;
import android.os.binder;
import android.os.ibinder;
import android.util.log;
public
class localservice extends service
mediaplayer mediaplayer=null;
@override
public
void oncreate()
@override
public
void onstart(intent intent, int startid)
@override
public
int onstartcommand(intent intent, int flags, int startid)
@override
public
void ondestroy()
//定義內容類繼承binder
public
class localbinder extends binder}}
//定義內容類繼承binder
public class localbinder extends binder
}可以返回這個服務,然後activity可以通過服務呼叫服務的方法了。
那麼如何啟動服務呢?從上面基礎知識中,我們知道有2種方法,如下:
//第2種繫結方式:啟動服務
private
void startcustomservice()
localservice localservice=null;在繫結服務的時候,需要乙個服務連線物件,serviceconnection,服務一旦連線,就會呼叫onserviceconnected方法,我們可以在這個方法裡面返回我們的本地服務物件,具體看**;而在服務斷開時候會呼叫onservicedisconnected方法,我們可以清理一些服務資源。//用bindservice方法啟動服務
private
void binderservice()
@override
public
void onservicedisconnected(componentname componentname)
}, context.bind_auto_create);
}
接下來,我們會講解一些aidl的一些知識。這些與服務息息相關。
Android開發之服務
建立服務時會自動繼承service類,service類中有乙個onbind 方法,這是唯一乙個抽象的方法,然後我們一般需要重寫oncreate onstartcommand ondestory 方法,其中oncreate 只在建立服務的時候才會呼叫,這一點和onstartcommand 是有區別的,...
Android小專案之 服務 Service
service 簡介 何謂 service service 意思即 服務 的意思,像 windows 上面的服務一樣,有些服務是在後台上執行,幹著靜悄悄的勾當不讓人知道 與 activity 不同,service 是並不直接與使用者互動的執行於後台的一類元件。google對service的解釋 se...
Android網路服務開發之Socket程式設計
socket是基於埠的通訊。一般情況下,乙個應用可以包含多個埠,但乙個埠只能分配給乙個應用程式。同乙個埠可以傳送資料,也可以接收資料。使用socket的步驟 1.首先描述乙個遠端的伺服器位址。可以使用inetaddress類來構造,也可以直接使用伺服器的網域名稱。2.建立乙個socket物件,建構函...