W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
如果 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();
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: