鴻蒙OS RemoteObjectCallbackList

2022-04-27 17:32 更新

RemoteObjectCallbackList

java.lang.Object

|---ohos.rpc.RemoteObjectCallbackList<E&

public class RemoteObjectCallbackList<E extends IRemoteBroker>
extends Object

存儲(chǔ)并維護(hù)從服務(wù)到其客戶(hù)端的遠(yuǎn)程回調(diào)列表。

詳細(xì)來(lái)說(shuō),這個(gè)類(lèi):

  • 在 Map 容器中存儲(chǔ)一組已注冊(cè)的 IRemoteBroker 回調(diào)。 每個(gè)回調(diào)由一個(gè) IRemoteObject 唯一標(biāo)識(shí)(通過(guò)調(diào)用 IRemoteBroker#asObject() 獲得。
  • 將 IRemoteObject.DeathRecipient 對(duì)象附加到每個(gè)已注冊(cè)的回調(diào),以便在托管回調(diào)的進(jìn)程死亡時(shí)自動(dòng)從列表中刪除回調(diào)。
  • 鎖定并備份回調(diào)列表以處理多線程調(diào)用,并迭代列表的備份而不保持備份鎖定。

構(gòu)造 RemoteObjectCallbackList 實(shí)例時(shí),需要通過(guò) E 來(lái)指定回調(diào)類(lèi)型。 E 繼承自 IRemoteBroker。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
RemoteObjectCallbackList()

方法總結(jié)

修飾符和類(lèi)型 方法 描述
Object getBroadcastCookie(int index) 獲取與廣播中給定索引匹配的回調(diào)關(guān)聯(lián)的cookie。
E getBroadcastInterface(int index) 獲取與廣播中給定索引匹配的回調(diào)。
Object getRemoteObjectCallbackCookie(IRemoteObject key) 獲取與指定 IRemoteObject 標(biāo)識(shí)的回調(diào)關(guān)聯(lián)的 cookie。
int getRemoteObjectCallbackCount() 獲取存儲(chǔ)在此容器中的回調(diào)數(shù)。
E getRemoteObjectCallbackInterface(IRemoteObject key) 獲取由指定的 IRemoteObject 標(biāo)識(shí)的回調(diào)。
void onRemoteCallbackDied(E callback) 當(dāng)托管指定回調(diào)的進(jìn)程死亡時(shí)調(diào)用。
void onRemoteCallbackDied(E callback, Object cookie) 當(dāng)托管指定回調(diào)的進(jìn)程終止時(shí)調(diào)用,cookie 包含附加數(shù)據(jù)。
boolean register(E callback) 將指定的回調(diào)添加到此 RemoteObjectCallbackList。
boolean register(E callback, Object cookie) 將具有指定 cookie 的指定回調(diào)添加到此 RemoteObjectCallbackList。
int startBroadcast() 開(kāi)始廣播。
void stopBroadcast() 停止廣播。
boolean unregister(E callback) 從此 RemoteObjectCallbackList 中刪除以前添加的回調(diào)。
void unregisterAll() 從此 RemoteObjectCallbackList 中刪除所有以前添加的回調(diào)。
從類(lèi) java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

RemoteObjectCallbackList

public RemoteObjectCallbackList()

方法詳情

onRemoteCallbackDied

public void onRemoteCallbackDied(E callback)

當(dāng)托管指定回調(diào)的進(jìn)程死亡時(shí)調(diào)用。 默認(rèn)情況下,回調(diào)沒(méi)有 cookie。

您可以重寫(xiě)此方法來(lái)定義后續(xù)操作。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
callback 表示進(jìn)程托管的回調(diào)。 由于進(jìn)程已終止,您不能再調(diào)用此回調(diào)。

onRemoteCallbackDied

public void onRemoteCallbackDied(E callback, Object cookie)

當(dāng)托管指定回調(diào)的進(jìn)程終止時(shí)調(diào)用,cookie 包含附加數(shù)據(jù)。

您可以重寫(xiě)此方法來(lái)定義后續(xù)操作。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
callback 表示進(jìn)程托管的回調(diào)。 由于進(jìn)程已終止,您不能再調(diào)用此回調(diào)。
cookie 指示與回調(diào)關(guān)聯(lián)的 cookie。 它可以是任何對(duì)象。

getRemoteObjectCallbackCount

public int getRemoteObjectCallbackCount()

獲取存儲(chǔ)在此容器中的回調(diào)數(shù)。

返回:

返回存儲(chǔ)在此容器中的回調(diào)數(shù)。

getRemoteObjectCallbackInterface

public E getRemoteObjectCallbackInterface(IRemoteObject key)

獲取由指定的 IRemoteObject 標(biāo)識(shí)的回調(diào)。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
key 指示指定的 IRemoteObject。

返回:

返回由指定的 IRemoteObject 標(biāo)識(shí)的回調(diào)。 使用 register(E) 將回調(diào)添加到 RemoteObjectCallbackList。

getRemoteObjectCallbackCookie

public Object getRemoteObjectCallbackCookie(IRemoteObject key)

獲取與指定 IRemoteObject 標(biāo)識(shí)的回調(diào)關(guān)聯(lián)的 cookie。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
key 指示指定的 IRemoteObject。

返回:

返回與指定 IRemoteObject 標(biāo)識(shí)的回調(diào)關(guān)聯(lián)的 cookie。 使用 register(E) 將回調(diào)添加到 RemoteObjectCallbackList。

register

public boolean register(E callback)

將指定的回調(diào)添加到此 RemoteObjectCallbackList。

此回調(diào)將保留在 RemoteObjectCallbackList 中,直到調(diào)用 unregister(E) 將其從列表中刪除或托管回調(diào)的進(jìn)程終止。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
callback 表示要添加的回調(diào)。

返回:

如果回調(diào)被添加到此 RemoteObjectCallbackList,則返回 true; 如果回調(diào)未能添加到此 RemoteObjectCallbackList 或已調(diào)用 unregisterAll(),則返回 false。

register

public boolean register(E callback, Object cookie)

將具有指定 cookie 的指定回調(diào)添加到此 RemoteObjectCallbackList。

與回調(diào)關(guān)聯(lián)的 cookie 也會(huì)添加到此 RemoteObjectCallbackList。 此回調(diào)將保留在 RemoteObjectCallbackList 中,直到調(diào)用 unregister(E) 將其從列表中刪除或托管回調(diào)的進(jìn)程終止。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
callback 表示要添加的回調(diào)。
cookie 指示與回調(diào)關(guān)聯(lián)的 cookie。 它可以是任何對(duì)象。

返回:

如果回調(diào)被添加到此 RemoteObjectCallbackList,則返回 true; 如果回調(diào)未能添加到此 RemoteObjectCallbackList 或已調(diào)用 unregisterAll(),則返回 false。

unregister

public boolean unregister(E callback)

從此 RemoteObjectCallbackList 中刪除以前添加的回調(diào)。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
callback 指示要?jiǎng)h除的回調(diào)。

返回:

cookie 如果找到指定的回調(diào)并將其從該 RemoteObjectCallbackList 中刪除,則返回 true; 如果未找到指定的回調(diào),則返回 false。

unregisterAll

public void unregisterAll()

從此 RemoteObjectCallbackList 中刪除所有以前添加的回調(diào)。

從此 RemoteObjectCallbackList 中刪除所有回調(diào)并將列表標(biāo)記為不可用后,調(diào)用 register(E) 將回調(diào)添加到此列表將失敗。 該方法用于防止客戶(hù)端在服務(wù)停止后注冊(cè)回調(diào)。

startBroadcast

public int startBroadcast()

開(kāi)始廣播。

此方法創(chuàng)建回調(diào)列表的副本并開(kāi)始調(diào)用已注冊(cè)的回調(diào)。 您可以使用 getBroadcastInterface(int) 和 getBroadcastCookie(int) 從列表中檢索回調(diào)。

一次只允許一個(gè)廣播。 確保始終從同一個(gè)線程調(diào)用此方法,并確保在調(diào)用此方法后調(diào)用 stopBroadcast()。

返回:

返回列表中回調(diào)的數(shù)量,這也是getBroadcastInterface(int)和getBroadcastCookie(int)可以訪問(wèn)的上限; 如果另一個(gè)廣播正在運(yùn)行,則返回 -1。

stopBroadcast

public void stopBroadcast()

停止廣播。

您必須在廣播完成后調(diào)用此方法。

getBroadcastInterface

public E getBroadcastInterface(int index)

獲取與廣播中給定索引匹配的回調(diào)。

該方法只能在廣播開(kāi)始后調(diào)用,并且在調(diào)用 stopBroadcast() 后其數(shù)據(jù)不再有效。

如果調(diào)用時(shí)返回的回調(diào)消失了,就會(huì)拋出 RemoteException。 您需要捕獲此異常,但您可以通過(guò)簡(jiǎn)單地忽略它來(lái)處理它,因?yàn)榛卣{(diào)列表會(huì)自動(dòng)刪除無(wú)效的回調(diào)。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
index 回調(diào)索引。 不能超過(guò) startBroadcast() 的返回值。

返回:

返回匹配給定索引的回調(diào)。

getBroadcastCookie

public Object getBroadcastCookie(int index)

獲取與廣播中給定索引匹配的回調(diào)關(guān)聯(lián)的cookie。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
index 回調(diào)索引。 不能超過(guò) startBroadcast() 的返回值。

返回:

返回與給定索引匹配的回調(diào)關(guān)聯(lián)的 cookie。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)