簡易App內部訊息通訊

2021-08-15 18:01:55 字數 2477 閱讀 5766

之前文章介紹了用廣播去通知介面更新,這會兒又無法滿足我的要求

廣播進行訊息通訊

廣播的好處

我現在又為什麼不滿足於廣播?

我的需求

為此我需要打的地基

大致的結構

show code!

/**

* created by gss on 2018/2/12 0012.

*/public

abstract

class

basestore

extends

baseresponder>

private

boolean checkvalid(e t)

public

void unregisterobserver(e t)

public

abstract

void notifyobservers(t t, object objects);

}

store目的很簡單,將觀察者一一新增到集合裡

觀察者必須實現介面responder

/**

* created by gss on 2018/2/12 0012.

*/public inte***ce baseresponder

只有兩個方法,需要觀察的行為(陣列返回),響應receiveresponse(過載後面會有)

/**

* created by gss on 2018/2/12 0012.

*/public abstract

class

dispatchmanager

extends

actiontype>

public abstract void dispatch(int type, object data);

}

行為管理器,乙個是帶引數的方法,乙個是不帶引數的方法

以上是基類的簡易結構,具體實現全在globalstore中,如下

/**

* created by gss on 2018/2/12 0012.

*/public

class globalstore extends basestore

return store;

}@override

public

void

notifyobservers(action action, object objects)

@override

public

void

unregisterobserver(responder t)

private

void

postmessage(action action, object objects)

//如型別不對,則查詢觀察者是否有過載的方法

else

if (respondermethod.get(responder) == null || respondermethod.get(responder).get(objects.getclass()) == null)

//如型別不對,且map中已儲存了map

else

if (respondermethod.get(responder).get(objects.getclass()) != null) else

responder.receiveresponse(null);

break;}}

} catch (exception e)

}private boolean getmethod(responder responder, object c) catch (exception e)

return

false;}}

方法體含義

這樣管理以後,首先,不存在傳輸的物件需要序列號的問題;其次,行為完全是開發者自定義的,可以回溯;再者可以對其進行擴充套件(比如加入嚴格模式型別不對不呼叫響應方法之類的)

最後來放出我的使用示例

兩個按鈕分別傳送申請事件和同意事件

註冊單事件

註冊單事件

註冊多事件,並過載了interger引數的響應體

可以看到,註冊了單事件的介面接收不到同意行為,而多事件可以

並且註冊了多事件行為的介面本身沒有interger型別的響應體,只是過載了它,一樣能成功收到

以上就是簡易的通訊框架了,如果好用的話,會繼續優化

MTK傳送內部訊息傳送流程

平台環境 6261a mtk平台mod和mod之間傳送訊息的流程 使用者使用的引數結構體 訊息體的頭部 define local para hdr kal uint8 ref count kal uint8 lp reserved kal uint16 msg len 在local para hdr...

Redis實現系列 集群內部訊息

集群內部訊息 集群中的各個節點通過傳送和接收訊息 message 來進行通訊,我們稱傳送訊息的節點為傳送者 sender 接收訊息的節點為接收者 receiver 節點傳送的訊息主要有以下五種 一條訊息由訊息頭 header 和訊息正文 data 組成,接下來的內容將首先介紹訊息頭,然後再分別介紹上...

內部訊息 微軟中國雲計算 內測Azure免費賬號

內部訊息 微軟中國雲計算 內測azure免費賬號!微軟msdn俱樂部 29754721,一大波azure免費賬號來襲 windows azure再次開啟發放免費試用賬號,windows azure雲平台的魅力吧!沒有的趕緊申請,不要外傳!微軟msdn俱樂部 29754721,微軟中國azure資料中...