本發明實施例涉及系統廣播技術,尤其涉及一種廣播消息排隊的方法、裝置及終端。
背景技術:
安卓(Android)系統是目前應用較為廣泛的一種手機等終端的操作系統。Android系統中,有很多不同的應用程序,為了在不同的應用程序中快速的進行信息傳遞,Android系統利用廣播機制來實現,有消息要通知不同的應用程序時,就通過廣播將這個消息發送給不同的應用程序。
在Android系統中,廣播發送者發送的廣播消息沒有限制,從而一個廣播發送者可以隨意發送任意數量的廣播,或非常頻繁的發送廣播,會導致廣播消息隊列中待處理的廣播消息非常的多,導致重要的廣播消息不能得到及時處理,引起系統功能異常。
技術實現要素:
本發明實施例提供一種廣播消息排隊的方法、裝置及終端,可以及時快速的處理重要的廣播消息,避免系統功能異常。
第一方面,本發明實施例提供了一種廣播消息排隊的方法,所述方法包括:
監聽廣播發送者發出的廣播消息;
在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定所述廣播消息的優先級;
根據所述廣播消息的優先級,確定所述廣播消息在廣播消息隊列中的插入位置;
根據所述插入位置,將所述廣播消息插入所述廣播消息隊列。
第二方面,本發明實施例還提供了一種廣播消息排隊的裝置,所述裝置包括:
廣播消息監聽模塊,用于監聽廣播發送者發出的廣播消息;
優先級確定模塊,用于在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定所述廣播消息的優先級;
插入位置確定模塊,用于根據所述廣播消息的優先級,確定所述廣播消息在廣播消息隊列中的插入位置;
廣播消息插入模塊,用于根據所述插入位置,將所述廣播消息插入所述廣播消息隊列。
第三方面,本發明實施例還提供了一種終端,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現以下步驟:
監聽廣播發送者發出的廣播消息;
在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定所述廣播消息的優先級;
根據所述廣播消息的優先級,確定所述廣播消息在廣播消息隊列中的插入位置;
根據所述插入位置,將所述廣播消息插入所述廣播消息隊列。
本發明實施例的技術方案,通過在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定廣播消息的優先級,根據廣播消息的優先級確定廣播消息在廣播消息隊列中的插入位置,進而根據所述插入位置,將廣播消息插入廣播消息隊列,從而實現了及時快速的處理重要的廣播消息,避免了系統功能異常。
附圖說明
圖1是本發明實施例提供的一種廣播消息排隊的方法的流程圖;
圖2是本發明一個實施例提供的一種廣播消息排隊的方法的流程圖;
圖3是本發明實施例提供的一種廣播消息排隊的裝置的結構示意圖;
圖4為本發明實施例提供的一種終端的結構示意圖。
具體實施方式
下面結合附圖和實施例對本發明作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋本發明,而非對本發明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發明相關的部分而非全部內容。
在更加詳細地討論示例性實施例之前應當提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各步驟描述成順序的處理,但是其中的許多步驟可以被并行地、并發地或者同時實施。此外,各步驟的順序可以被重新安排。當其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應于方法、函數、規程、子例程、子程序等等。
圖1是本發明實施例提供的一種廣播消息排隊的方法的流程圖,本實施例可適用于在監聽到廣播消息時確定廣播消息在廣播消息隊列中的位置的情況,該方法可以由廣播消息排隊的裝置來執行,其中該裝置可由軟件和/或硬件實現,該裝置可集成于終端中,該終端可以是智能手機、平板電腦等,該方法包括如下步驟:
步驟110,監聽廣播發送者發出的廣播消息。
其中,廣播機制本質上是在終端的操作系統中一種組件間的通訊方式,是一種廣泛運用在應用程序之間傳輸消息的機制。例如在終端的安卓系統下,有一些操作完成以后,會發送廣播消息。廣播消息可以是操作系統中產生的各種各樣的事件消息數據。比如說發出一條短信或打出一個電話,都會發送廣播,當某個應用程序接收了這個廣播時,就可以做出相應的處理。廣播發送者可以是系統和應用程序軟件。應用程序軟件可以是安裝于手機等終端的第三方應用軟件或者系統自帶的應用程序,例如:安裝于終端的第三方應用軟件可以包括微信客戶端、QQ客戶端、淘寶客戶端和支付寶客戶端等,系統自帶的應用程序可以包括日歷、時鐘、天氣和便簽等。廣播消息可以是系統廣播和應用廣播,其中,系統廣播可以包括亮屏廣播、息屏廣播、解鎖廣播、網絡狀態變化廣播、藍牙狀態變化廣播、切換語言廣播、切換主題廣播等,應用廣播可以是由應用程序軟件發出的廣播。
可以通過終端中的廣播管理模塊(如ActivityManagerService)監聽系統中所有廣播發送者的動態,檢測廣播發送者是否發出廣播消息。其中,ActivityManagerService在Android系統的廣播機制中扮演著廣播中心的角色,負責系統中所有廣播的注冊和發布操作,其中,廣播的注冊是指應用程序把廣播接收器注冊到ActivityManagerService的過程。廣播的發布包括廣播發送者將廣播發送到ActivityManagerService,ActivityManagerService接收到這個廣播以后在自己的注冊中心查看有哪些廣播接收器訂閱了該廣播,然后把這個廣播逐一發送到這些廣播接收器中。在Android系統中,監聽廣播發送者發出的廣播消息即通過ActivityManagerService來監聽廣播發送者是否將廣播消息發送到ActivityManagerService,當通過ActivityManagerService監聽到廣播發送者將廣播消息發送到ActivityManagerService時,確定監聽到廣播發送者發出了廣播消息。
步驟120,在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定所述廣播消息的優先級。
在通過廣播管理模塊監聽到廣播發送者發出廣播消息時,可以根據廣播發送者的重要程度或者廣播消息的重要性及實時處理的緊迫性確定所述廣播消息的優先級,例如,如果廣播發送者是系統,則確定廣播消息的優先級為較高的優先級;如果廣播發送者是第三方應用程序,則確定廣播消息的優先級為較低的優先級。
示例性的,可以將廣播消息的優先級設置為三個優先級:最高優先級、次優先級和普通優先級。并規定:最高優先級的廣播消息排到廣播消息隊列的前端,可以更快的被處理;次優先級的廣播消息排在廣播消息隊列中最高優先級的廣播消息的后面,在最高優先級的廣播消息處理完之后進行處理;普通優先級的廣播消息排在廣播消息隊列中次優先級的廣播消息的后面,在最高優先級和次優先級的廣播消息處理完之后進行處理;優先級相同的廣播消息,按照入隊順序進行處理。
示例性的,現有技術中,Android系統的手機在用戶按下電源鍵亮屏或熄屏時,要對應的發送亮屏廣播或熄屏廣播,在該廣播進入廣播消息隊列時會按照廣播的時間先后順序進入廣播消息隊列,如果廣播消息隊列中在這個亮屏廣播或熄屏廣播前面還有很多廣播在等待處理(這些廣播不是系統廣播),會影響到手機的亮滅屏速度,導致亮滅屏變慢。而在本實施例中,通過ActivityManagerService監聽到系統將亮屏廣播或熄屏廣播發送到ActivityManagerService時,確定發送該亮屏廣播或熄屏廣播的廣播發送者為系統,則將該亮屏廣播或熄屏廣播的優先級設置為最高的優先級,從而放在廣播消息隊列的前端,從而能夠盡快對該亮屏廣播或熄屏廣播進行處理。
在一個實施例中,根據所述廣播發送者確定所述廣播消息的優先級,可選包括:
統計所述廣播發送者在預設時間內的使用頻率;
根據所述使用頻率,確定所述廣播消息的優先級。
在監聽到廣播發送者發出廣播消息時,確定在當前時間之前的預設時間內用戶對該廣播發送者的使用頻率,并根據使用頻率確定廣播消息的優先級,如果使用頻率較高,則將廣播消息的優先級設置為較高的優先級,從而提高了活躍應用接收廣播消息的速度。
在一個實施例中,根據所述使用頻率,確定所述廣播消息的優先級,可選包括:
根據所述使用頻率,確定所述使用頻率所屬的頻率范圍;
根據所述頻率范圍,確定所述廣播消息的優先級。
可以預先建立頻率范圍與廣播消息的優先級的對應關系。首先根據使用頻率,確定該使用頻率所屬的頻率范圍,根據該頻率范圍及所述對應關系,可以直接確定該廣播消息的優先級,從而進一步加快了廣播消息的處理速度。
步驟130,根據所述廣播消息的優先級,確定所述廣播消息在廣播消息隊列中的插入位置。
其中,廣播消息隊列按照廣播消息的優先級的順序進行排列,高優先級的廣播消息排列在隊頭,低優先級的廣播消息排列在隊尾。
由于廣播消息隊列是按照廣播消息的優先級的順序進行排列的,則根據廣播消息的優先級可以直接確定出該廣播消息在廣播消息隊列中的插入位置。
示例性的,如果廣播消息的優先級共有三級,分別為最高優先級、次優先級和最低優先級,當前的廣播消息隊列中只有次優先級和最低優先級的廣播消息,且當前監聽到的廣播消息的優先級為最高優先級,則可以確定該廣播消息在廣播消息隊列中的插入位置為隊頭。
在一個實施例中,根據所述廣播消息的優先級,確定所述廣播消息在廣播消息隊列中的插入位置,可選包括:
將所述廣播消息的優先級與所述廣播消息隊列中的廣播消息的優先級進行對比;
根據對比結果,確定所述廣播消息在所述廣播消息隊列中的插入位置。
廣播消息隊列是按照優先級的高低順序進行排列,在確定了廣播消息的優先級后,將該優先級與廣播消息隊列中的廣播消息的優先級進行對比,根據對比結果,可以確定所述廣播消息在廣播消息隊列中的插入位置,進一步提高了廣播消息的處理速度。
在一個實施例中,根據對比結果,確定所述廣播消息在所述廣播消息隊列中的插入位置,可選包括:
當所述廣播消息隊列中有與所述優先級相同的廣播消息時,確定所述廣播消息的插入位置為與所述優先級相同的廣播消息之后;
當所述廣播消息隊列中沒有與所述優先級相同的廣播消息時,判斷所述優先級是否高于所述廣播消息隊列中的所有廣播消息的優先級;
如果所述優先級高于所述廣播消息隊列中的所有廣播消息的優先級,則確定所述插入位置為所述廣播消息隊列的隊頭;
如果所述優先級不高于所述廣播消息隊列中的所有廣播消息的優先級,則判斷所述優先級是否低于所述廣播消息隊列中的所有廣播消息的優先級;
如果所述優先級低于所述廣播消息隊列中的所有廣播消息的優先級,則確定所述插入位置為所述廣播消息的隊尾;
如果所述優先級不低于所述廣播消息隊列中的所有廣播消息的優先級,則確定所述廣播消息隊列中的高于所述優先級和低于所述優先級的相鄰兩個廣播消息,并確定所述廣播消息的插入位置為所述相鄰兩個廣播消息之間。
在將廣播消息的優先級與廣播消息隊列中的廣播消息的優先級進行對比時,可以先判斷廣播消息隊列中是否有與廣播消息的優先級相同的廣播消息,如果有,則可以直接根據該相同優先級的廣播消息所在的位置確定所述廣播消息的插入位置,確定的插入位置可以是該相同優先級的廣播消息之后并近鄰該相同優先級的廣播消息。如果廣播消息隊列中沒有與廣播消息的優先級相同的廣播消息,可以分為三種情況分別進行處理:即所述優先級高于所述廣播消息隊列中的所有廣播消息的優先級、所述優先級低于所述廣播消息隊列中的所有廣播消息的優先級以及所述優先級介于所述廣播消息隊列中的廣播消息的優先級之間。通過分情況確定廣播消息的優先級,可以進一步加快廣播消息的處理速度。
步驟140,根據所述插入位置,將所述廣播消息插入所述廣播消息隊列。
根據確定的插入位置,將所述廣播消息插入所述廣播消息隊列的插入位置中。
本實施例的技術方案,通過在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定廣播消息的優先級,根據廣播消息的優先級確定廣播消息在廣播消息隊列中的插入位置,進而根據所述插入位置,將廣播消息插入廣播消息隊列,從而實現了及時快速的處理重要的廣播消息,避免了系統功能異常。
圖2是本發明一個實施例提供的一種廣播消息排隊的方法的流程圖,該方法包括如下步驟:
步驟210,監聽廣播發送者發出的廣播消息。
步驟220,在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定所述廣播消息的優先級。
步驟230,根據所述廣播消息的優先級,確定所述廣播消息在廣播消息隊列中的插入位置。
步驟240,根據所述插入位置,將所述廣播消息插入所述廣播消息隊列。
步驟250,按照所述廣播消息隊列中的廣播消息的排隊順序,識別當前的廣播消息的廣播接收者。
本發明實施例中,廣播消息隊列是根據廣播消息的優先級進行排隊的,廣播消息隊列在不斷的動態變化中,在終端運行的過程中,廣播消息隊列在持續更新,廣播消息隊列中分發完畢的廣播消息在廣播消息隊列中清除,在分發廣播消息隊列中的廣播消息時也有可能有新的廣播消息進入廣播消息隊列。示例性的,廣播消息隊列中按照廣播消息的排隊順序包括廣播消息1、廣播消息2、廣播消息3、廣播消息4……廣播消息100,按照廣播消息隊列中的廣播消息的排隊順序分發其中的廣播消息時,先分發廣播消息1,廣播消息1分發完之后分發廣播消息2,以此順序類推,直到將廣播消息隊列中的廣播消息分發完畢。
其中,當前的廣播消息可以是當前待分發的廣播消息,例如:廣播消息隊列中按照分發的先后順序包括廣播消息1、廣播消息2、廣播消息3、廣播消息4……廣播消息100,其中廣播消息1是當前正在分發的廣播消息,那么廣播消息2即為當前待分發的廣播消息。廣播接收者可以是安裝于終端的第三方應用軟件或者系統自帶的應用程序。示例性的,在Android系統中,識別當前的廣播消息的廣播接收者時,通過ActivityManagerService在注冊中心查看有哪些廣播接收者訂閱了接收該廣播消息的廣播接收器,從而確定其廣播接收者。
步驟260,將所述當前的廣播消息分發給所述廣播接收者。
通過在識別當前待分發的廣播消息的廣播接收者之后,再依次將該廣播消息分發給各廣播接收者,可以保證廣播接收者對廣播消息的及時響應。
本實施例的技術方案,通過在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定廣播消息的優先級,根據廣播消息的優先級確定廣播消息在廣播消息隊列中的插入位置,進而根據所述插入位置,將廣播消息插入廣播消息隊列,并根據廣播消息隊列中廣播消息的排隊順序分發其中的廣播消息,從而實現了及時快速分發重要的廣播消息,并可以保證廣播接收者快速的響應該廣播消息,避免了系統功能異常。
圖3是本發明實施例提供的一種廣播消息排隊的裝置的結構示意圖,如圖3所示,本實施例所述的廣播消息排隊的裝置包括:廣播消息監聽模塊310、優先級確定模塊320、插入位置確定模塊330和廣播消息插入模塊340。
其中,廣播消息監聽模塊,用于監聽廣播發送者發出的廣播消息;
優先級確定模塊,用于在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定所述廣播消息的優先級;
插入位置確定模塊,用于根據所述廣播消息的優先級,確定所述廣播消息在廣播消息隊列中的插入位置;
廣播消息插入模塊,用于根據所述插入位置,將所述廣播消息插入所述廣播消息隊列。
可選的,所述優先級確定模塊包括:
使用頻率統計單元,用于統計所述廣播發送者在預設時間內的使用頻率;
優先級確定單元,用于根據所述使用頻率,確定所述廣播消息的優先級。
可選的,所述優先級確定單元具體用于:
根據所述使用頻率,確定所述使用頻率所屬的頻率范圍;
根據所述頻率范圍,確定所述廣播消息的優先級。
可選的,所述插入位置確定模塊包括:
優先級對比單元,用于將所述廣播消息的優先級與所述廣播消息隊列中的廣播消息的優先級進行對比;
插入位置確定單元,用于根據對比結果,確定所述廣播消息在所述廣播消息隊列中的插入位置。
可選的,所述插入位置確定單元具體用于:
當所述廣播消息隊列中有與所述優先級相同的廣播消息時,確定所述廣播消息的插入位置為與所述優先級相同的廣播消息之后;
當所述廣播消息隊列中沒有與所述優先級相同的廣播消息時,判斷所述優先級是否高于所述廣播消息隊列中的所有廣播消息的優先級;
如果所述優先級高于所述廣播消息隊列中的所有廣播消息的優先級,則確定所述插入位置為所述廣播消息隊列的隊頭;
如果所述優先級不高于所述廣播消息隊列中的所有廣播消息的優先級,則判斷所述優先級是否低于所述廣播消息隊列中的所有廣播消息的優先級;
如果所述優先級低于所述廣播消息隊列中的所有廣播消息的優先級,則確定所述插入位置為所述廣播消息的隊尾;
如果所述優先級不低于所述廣播消息隊列中的所有廣播消息的優先級,則確定所述廣播消息隊列中的高于所述優先級和低于所述優先級的相鄰兩個廣播消息,并確定所述廣播消息的插入位置為所述相鄰兩個廣播消息之間。
可選的,還包括:
廣播接收者識別模塊,用于按照所述廣播消息隊列中的廣播消息的排隊順序,識別當前的廣播消息的廣播接收者;
廣播消息分發模塊,用于將所述當前的廣播消息分發給所述廣播接收者。
上述廣播消息排隊的裝置可執行本發明任意實施例所提供的廣播消息排隊的方法,具備執行方法相應的功能模塊和有益效果。未在本實施例中詳盡描述的技術細節,可參見本發明任意實施例提供的廣播消息排隊的方法。
本發明實施例還提供了一種終端,該終端可以包括本發明任意實施例提供的廣播消息排隊的裝置。圖4為本發明實施例提供的一種終端的結構示意圖,如圖4所示,該終端可以包括:殼體(圖中未示出)、存儲器401、中央處理器(Central Processing Unit,CPU)402(又稱處理器,以下簡稱CPU)、存儲在存儲器401上并可在處理器402上運行的計算機程序、電路板(圖中未示出)和電源電路(圖中未示出)。所述電路板安置在所述殼體圍成的空間內部;所述CPU402和所述存儲器401設置在所述電路板上;所述電源電路,用于為所述終端的各個電路或器件供電;所述存儲器401,用于存儲可在處理器上運行的計算機程序;所述CPU402通過讀取并執行所述存儲器401中存儲的計算機程序。
該終端還包括:外設接口403、RF(Radio Frequency,射頻)電路405、音頻電路406、揚聲器411、電源管理芯片408、輸入/輸出(I/O)子系統409、觸摸屏412、其他輸入/控制設備410以及外部端口404,這些部件通過一個或多個通信總線或信號線407來通信。
應該理解的是,圖示終端400僅僅是終端的一個范例,并且終端400可以具有比圖中所示出的更多的或者更少的部件,可以組合兩個或更多的部件,或者可以具有不同的部件配置。圖中所示出的各種部件可以在包括一個或多個信號處理和/或專用集成電路在內的硬件、軟件、或硬件和軟件的組合中實現。
下面就本實施例提供的用于廣播消息排隊的終端進行詳細的描述,該終端以手機為例。
存儲器401,所述存儲器401可以被CPU402、外設接口403等訪問,所述存儲器401可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如一個或多個磁盤存儲器件、閃存器件、或其他易失性固態存儲器件。
外設接口403,所述外設接口403可以將設備的輸入和輸出外設連接到CPU402和存儲器401。
I/O子系統409,所述I/O子系統409可以將設備上的輸入輸出外設,例如觸摸屏412(相當于上述實施例中的屏幕)和其他輸入/控制設備410,連接到外設接口403。I/O子系統409可以包括顯示控制器4091和用于控制其他輸入/控制設備410的一個或多個輸入控制器4092。其中,一個或多個輸入控制器4092從其他輸入/控制設備410接收電信號或者向其他輸入/控制設備410發送電信號,其他輸入/控制設備410可以包括物理按鈕(按壓按鈕、搖臂按鈕等)、撥號盤、滑動開關、操縱桿、點擊滾輪。值得說明的是,輸入控制器4092可以與以下任一個連接:鍵盤、紅外端口、USB接口以及諸如鼠標的指示設備。
觸摸屏412,所述觸摸屏412是用戶終端與用戶之間的輸入接口和輸出接口,將可視輸出顯示給用戶,可視輸出可以包括圖形、文本、圖標、視頻等。
I/O子系統409中的顯示控制器4091從觸摸屏412接收電信號或者向觸摸屏412發送電信號。觸摸屏412檢測觸摸屏上的接觸,顯示控制器4091將檢測到的接觸轉換為與顯示在觸摸屏412上的用戶界面對象的交互,即實現人機交互,顯示在觸摸屏412上的用戶界面對象可以是運行游戲的圖標、聯網到相應網絡的圖標等。值得說明的是,設備還可以包括光鼠,光鼠是不顯示可視輸出的觸摸敏感表面,或者是由觸摸屏形成的觸摸敏感表面的延伸。
RF電路405,主要用于建立手機與無線網絡(即網絡側)的通信,實現手機與無線網絡的數據接收和發送。例如收發短信息、電子郵件等。具體地,RF電路405接收并發送RF信號,RF信號也稱為電磁信號,RF電路405將電信號轉換為電磁信號或將電磁信號轉換為電信號,并且通過該電磁信號與通信網絡以及其他設備進行通信。RF電路405可以包括用于執行這些功能的已知電路,其包括但不限于天線系統、RF收發機、一個或多個放大器、調諧器、一個或多個振蕩器、數字信號處理器、CODEC(COder-DECoder,編譯碼器)芯片組、用戶標識模塊(Subscriber Identity Module,SIM)等等。
音頻電路406,主要用于從外設接口403接收音頻數據,將該音頻數據轉換為電信號,并且將該電信號發送給揚聲器411。
揚聲器411,用于將手機通過RF電路405從無線網絡接收的語音信號,還原為聲音并向用戶播放該聲音。
電源管理芯片408,用于為CPU402、I/O子系統及外設接口所連接的硬件進行供電及電源管理。
本發明實施例提供的CPU402在執行所述存儲器401中存儲的計算機程序時實現以下步驟:
監聽廣播發送者發出的廣播消息;
在監聽到廣播發送者發出廣播消息時,根據所述廣播發送者確定所述廣播消息的優先級;
根據所述廣播消息的優先級,確定所述廣播消息在廣播消息隊列中的插入位置;
根據所述插入位置,將所述廣播消息插入所述廣播消息隊列。
上述終端可執行本發明任意實施例所提供的方法,具備執行方法相應的功能模塊和有益效果。
注意,上述僅為本發明的較佳實施例及所運用技術原理。本領域技術人員會理解,本發明不限于這里所述的特定實施例,對本領域技術人員來說能夠進行各種明顯的變化、重新調整和替代而不會脫離本發明的保護范圍。因此,雖然通過以上實施例對本發明進行了較為詳細的說明,但是本發明不僅僅限于以上實施例,在不脫離本發明構思的情況下,還可以包括更多其他等效實施例,而本發明的范圍由所附的權利要求范圍決定。