Android服務之Service 其一

2021-06-18 08:52:29 字數 2418 閱讀 8444

那麼究竟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種方法,如下:

//

啟動服務

private

void startcustomservice()

第2種繫結方式:

localservice localservice=null;

//用bindservice方法啟動服務

private

void binderservice()

@override

public

void onservicedisconnected(componentname componentname)

}, context.bind_auto_create);

}

在繫結服務的時候,需要乙個服務連線物件,serviceconnection,服務一旦連線,就會呼叫onserviceconnected方法,我們可以在這個方法裡面返回我們的本地服務物件,具體看**;而在服務斷開時候會呼叫onservicedisconnected方法,我們可以清理一些服務資源。

接下來,我們會講解一些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物件,建構函...