------------------
什麼叫廣播?
-----------------
【比如】
在 android 裡面有各種各樣的廣播,比如電池的使用狀態,**的接收和簡訊的接收都會產生乙個廣播,
應用程式開發者也可以監聽這些廣播並做出程式邏輯的處理
----------------------------
android廣播的分類
----------------------------
1、 普通廣播:(normal broadcasts)
依次傳遞給各個處理器去處理
完全非同步的,可以在同一時刻(邏輯上)被所有接收者接收到
【優點】訊息傳遞的效率比較高
【缺點】接收者不能將處理結果傳遞給下乙個接收者,並且無法終止廣播intent的傳播
2、 粘性訊息:
粘性訊息在傳送後,一直存在於系統的訊息容器裡面,
等待對應的處理器去處理
如果暫時沒有處理器處理這個訊息則一直在訊息容器裡面處於等待狀態。
3、 有序廣播:(ordered broadcasts)
按照處理器的不同優先順序來區分的。
【特點】
1.高優先順序的處理器會優先截獲這個訊息,並且可以將這個訊息刪除。
2.按照接收者宣告的優先級別(宣告在intent-filter元素的android:priority屬性中,數越大優先級別越高,取值範圍:-1000到1000。也可以呼叫intentfilter物件的
setpriority()進行設定),被接收者依次接收廣播。
【例如】
a的級別高於b,b的級別高於c,那麼,廣播先傳給a,再傳給b,最後傳給c。
a得到廣播後,可以往廣播裡存入資料,當廣播傳給b時,b可以從廣播中得到a存入的資料。
【code】
context.sendorderedbroadcast()
// 傳送的是有序廣播
broadcastreceiver.abortbroadcast() // 系統會根據接收者宣告的優先級別按順序逐個執行接收者,
前面的接收者有權終止廣播,如果廣播被前面的接收者終止,後面的接收者就再也無法獲取到廣播。
setresultextras(bundle)
// 前面的接收者可以將處理結果存放進結果物件,然後傳給下乙個接收者
bundle bundle =getresultextras(true)
// 獲取上乙個接收者存入在結果物件中的資料
【搞笑的做法】
系統收到簡訊,發出的廣播屬於有序廣播。如果想阻止使用者收到簡訊,可以通過設定優先順序,
讓你們自定義的接收者先獲取到廣播,然後終止廣播,這樣使用者就接收不到簡訊了。
【案例分析】
乙個經典的**黑名單,首先通過將黑名單號碼儲存在資料庫裡面,
當來電時,我們接收到來電廣播並將黑名單號碼與資料庫中的某個資料做匹配,如果匹配的話則做出相應的處理,比如掛掉**、比如靜音等等。。
【注意】
普通廣播和粘性訊息不能被截獲
有序廣播是可以被截獲的
--------------------------
處理器的註冊分類
--------------------------
1、 函式**動態的方式註冊
用**動態的銷毀
每次用來處理訊息的就是同乙個例項物件 --- 這樣的速度就變快了麼??
2、 在配置檔案裡面靜態註冊,靜態註冊有個特點,那就是一旦註冊就會一直存在於系統裡面,無論應用是否關閉或開關機。(簡直就是乙個流氓軟體病毒啊~)。
靜態註冊每處理訊息一次,系統new乙個處理器處理,並銷毀
WorkFlow之理論篇
對於工作流我也多次接觸到,雖然不是主要負責工作流,自己也私下略知一二,下面對我這階段對工作流的學習做個總結 工作流尚沒有乙個統一的 明確的定義,不同的組織和研究人員對工作流給出了各自的定義 定義1 工作流是一類能夠完全或者部分自動執行的經營過程,它根據一系列過程規則,文件 資訊或任務能夠在不同的執行...
網路程式設計之理論篇
網路通訊作為網際網路的技術支援,已被廣泛應用在軟體開發中,無論是web,服務端,客戶端還是桌面應用,都是必須掌握的一門技術。在軟體開發層面實現遠端資料交換的程式設計技術。要熟悉網路程式設計,首先需要學習網路協議的相關知識。什麼網路協議呢?網路協議是為網路中進行資料交換定義的規則,以實現按此規範進行傳...
網路程式設計之理論篇
網路通訊作為網際網路的技術支援,已被廣泛應用在軟體開發中,無論是web,服務端,客戶端還是桌面應用,都是必須掌握的一門技術。在軟體開發層面實現遠端資料交換的程式設計技術。複製 要熟悉網路程式設計,首先需要學習網路協議的相關知識。什麼網路協議呢?網路協議是為網路中進行資料交換定義的規則,以實現按此規範...