關於一個通信層的設計
通信層通常作爲一個軟件的底層,負責與外界打交道。
這裏的通信特指異步通信,發出的請求可能得不到響應,可能很久才響應,也可能返回無效響應。但爲了請求一方的上層能夠正常工作,一個通信層應該能完全應付這些情況。以下是總結的幾點,不分先後,同等重要。
每個任務都有唯一的身份標識。
每個已發送請求的任務都進入已發送隊列(寫到這裏想起了ril.java),任務完成(返回了響應結果)時,憑藉身份標識到已發送隊列中找回自己,完成剩下的操作。
服務器返回的響應結果必須包含身份標識。
由一個線程負責清理掉已發送隊列的超時任務。
通信層保證不論響應如何都必須給調用層一個結果。
有一個專門的隊列緩存待發送的任務(ril的設計是發送和接收都是一個專門的線程)。
爲了處理上的方便,任務都以某種格式封裝,從任務池裏獲取(爲了唯一的身份標識)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Android代碼混淆,就這麼簡單
Maybe_ren
2020-07-08 12:37:11
利用rxjava實現監聽EditView裏的文字在規定時間間隔不變後進行聯想搜索
丶咿呀咿呀
2020-07-08 12:20:52
在虛擬機中安裝android apk
shaochengand
2020-07-08 11:56:57
Android studio 升級後項目出錯
mr.rui
2020-07-08 11:51:59
Android應對進程被殺死--Service(二)
lyl953147712
2020-07-08 11:46:59
Windows Running “flutter pub get“ in XXX卡死
小海编码日记
2020-07-08 12:40:51
Android操作Exif-ExifInterface全解析
Maybe_ren
2020-07-08 12:37:11
selinux-實現
vrix
2020-07-08 12:37:00
selinux-概覽
vrix
2020-07-08 12:37:00
selinux-驗證
vrix
2020-07-08 12:37:00
Android受限廣播(protected-broadcast)
vrix
2020-07-08 12:37:00
selinux-自定義
vrix
2020-07-08 12:37:00
在Android端實現基於OPENGL ES 的深度學習前向傳播框架
koibiki
2020-07-08 12:23:30
Desire rom - build kernel
dkyang
2020-07-08 12:22:51