鴻蒙OS 連接Service

2020-09-18 10:04 更新

如果 Service 需要與 Page Ability 或其他應(yīng)用的 Service Ability 進(jìn)行交互,則應(yīng)創(chuàng)建用于連接的 Connection。Service 支持其他 Ability 通過(guò) connectAbility()方法與其進(jìn)行連接。

在使用 connectAbility() 處理回調(diào)時(shí),需要傳入目標(biāo) Service 的 Intent 與 IAbilityConnection 的實(shí)例。IAbilityConnection 提供了兩個(gè)方法供開發(fā)者實(shí)現(xiàn): onAbilityConnectDone() 用來(lái)處理連接的回調(diào),onAbilityDisconnectDone() 用來(lái)處理斷開連接的回調(diào)。

連接 Service 的代碼示例如下:

// 創(chuàng)建連接回調(diào)實(shí)例
private IAbilityConnection connection = new IAbilityConnection() {
    // 連接到Service的回調(diào)
    @Override
    public void onAbilityConnectDone(ElementName elementName, IRemoteObject iRemoteObject, int resultCode) {
        // 在這里開發(fā)者可以拿到服務(wù)端傳過(guò)來(lái)IRemoteObject對(duì)象,從中解析出服務(wù)端傳過(guò)來(lái)的信息
    }

 
    // 斷開與連接的回調(diào)
    @Override
    public void onAbilityDisconnectDone(ElementName elementName, int resultCode) {
    }
};
// 連接Service
connectAbility(intent, connection);

同時(shí),Service 側(cè)也需要在 onConnect() 時(shí)返回 IRemoteObject,從而定義與 Service 進(jìn)行通信的接口。onConnect() 需要返回一個(gè) IRemoteObject 對(duì)象,HarmonyOS 提供了 IRemoteObject 的默認(rèn)實(shí)現(xiàn),用戶可以通過(guò)繼承 RemoteObject 來(lái)創(chuàng)建自定義的實(shí)現(xiàn)類。Service 側(cè)把自身的實(shí)例返回給調(diào)用側(cè)的代碼示例如下:

// 創(chuàng)建自定義IRemoteObject實(shí)現(xiàn)類
private class MyRemoteObject extends RemoteObject {
    public MyRemoteObject() {
        super("MyRemoteObject");
    }
}

 
// 把IRemoteObject返回給客戶端
@Override
protected IRemoteObject onConnect(Intent intent) {
    return new MyRemoteObject();
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)