鴻蒙OS RemoteObjectCallbackList

2022-04-27 17:32 更新

RemoteObjectCallbackList

java.lang.Object

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

  1. public class RemoteObjectCallbackList<E extends IRemoteBroker>
  2. extends Object

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

詳細(xì)來說,這個類:

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

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

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

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

方法總結(jié)

修飾符和類型 方法 描述
Object getBroadcastCookie(int index) 獲取與廣播中給定索引匹配的回調(diào)關(guān)聯(lián)的cookie。
E getBroadcastInterface(int index) 獲取與廣播中給定索引匹配的回調(diào)。
Object getRemoteObjectCallbackCookie(IRemoteObject key) 獲取與指定 IRemoteObject 標(biāo)識的回調(diào)關(guān)聯(lián)的 cookie。
int getRemoteObjectCallbackCount() 獲取存儲在此容器中的回調(diào)數(shù)。
E getRemoteObjectCallbackInterface(IRemoteObject key) 獲取由指定的 IRemoteObject 標(biāo)識的回調(diào)。
void onRemoteCallbackDied(E callback) 當(dāng)托管指定回調(diào)的進(jìn)程死亡時調(diào)用。
void onRemoteCallbackDied(E callback, Object cookie) 當(dāng)托管指定回調(diào)的進(jìn)程終止時調(diào)用,cookie 包含附加數(shù)據(jù)。
boolean register(E callback) 將指定的回調(diào)添加到此 RemoteObjectCallbackList。
boolean register(E callback, Object cookie) 將具有指定 cookie 的指定回調(diào)添加到此 RemoteObjectCallbackList。
int startBroadcast() 開始廣播。
void stopBroadcast() 停止廣播。
boolean unregister(E callback) 從此 RemoteObjectCallbackList 中刪除以前添加的回調(diào)。
void unregisterAll() 從此 RemoteObjectCallbackList 中刪除所有以前添加的回調(diào)。
從類 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)程死亡時調(diào)用。 默認(rèn)情況下,回調(diào)沒有 cookie。

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

參數(shù):

參數(shù)名稱 參數(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)程終止時調(diào)用,cookie 包含附加數(shù)據(jù)。

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

參數(shù):

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

getRemoteObjectCallbackCount

public int getRemoteObjectCallbackCount()

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

返回:

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

getRemoteObjectCallbackInterface

public E getRemoteObjectCallbackInterface(IRemoteObject key)

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

參數(shù):

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

返回:

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

getRemoteObjectCallbackCookie

public Object getRemoteObjectCallbackCookie(IRemoteObject key)

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

參數(shù):

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

返回:

返回與指定 IRemoteObject 標(biāo)識的回調(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ù)名稱 參數(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 也會添加到此 RemoteObjectCallbackList。 此回調(diào)將保留在 RemoteObjectCallbackList 中,直到調(diào)用 unregister(E) 將其從列表中刪除或托管回調(diào)的進(jìn)程終止。

參數(shù):

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

返回:

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

unregister

public boolean unregister(E callback)

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

參數(shù):

參數(shù)名稱 參數(shù)描述
callback 指示要刪除的回調(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)添加到此列表將失敗。 該方法用于防止客戶端在服務(wù)停止后注冊回調(diào)。

startBroadcast

public int startBroadcast()

開始廣播。

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

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

返回:

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

stopBroadcast

public void stopBroadcast()

停止廣播。

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

getBroadcastInterface

public E getBroadcastInterface(int index)

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

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

如果調(diào)用時返回的回調(diào)消失了,就會拋出 RemoteException。 您需要捕獲此異常,但您可以通過簡單地忽略它來處理它,因為回調(diào)列表會自動刪除無效的回調(diào)。

參數(shù):

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

返回:

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

getBroadcastCookie

public Object getBroadcastCookie(int index)

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

參數(shù):

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

返回:

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號