專利名稱:一種微博客戶端、微博消息的聚合方法以及即時(shí)通信客戶端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤指一種微博客戶端、微博消息的聚合方法以及即時(shí)通信客戶端。
背景技術(shù):
即時(shí)通訊(IM)工具發(fā)展到今天,已經(jīng)被大多數(shù)的網(wǎng)絡(luò)用戶所接受,成為用戶必不可少的軟件工具。需要指出,網(wǎng)絡(luò)IM工具不但在平時(shí)的休閑娛樂中,而且在用戶的工作中都有著廣泛的使用。用戶無論在生活還是工作中都大量使用IM軟件與朋友、同事以及同學(xué)等進(jìn)行交流與溝通。因此,用戶對(duì)IM工具(比如IM軟件)的易用性、穩(wěn)定性、安全性等方面都會(huì)提出較高的要求。IM軟件主要實(shí)現(xiàn)的是一對(duì)一的好友單獨(dú)聊天模式,以及一對(duì)N的群或者討論組的消息聊天模式。隨著互聯(lián)網(wǎng)應(yīng)用的不斷發(fā)展,出現(xiàn)了微型博客或者一句話博客,并且微博(比如 twitter)作為一種擴(kuò)展IM軟件的消息傳播機(jī)制的新產(chǎn)品、新應(yīng)用,在不斷發(fā)展壯大。在微博中,用戶通過140個(gè)字左右的一句話來表達(dá)自己,這種方式可以非??焖俚貍鞑ハ?,實(shí)現(xiàn)用戶消息聊天模式從一對(duì)一、一對(duì)N到一對(duì)無窮的一種跨越。這種一對(duì)無窮的消息聊天模式也意味著一個(gè)人可以對(duì)無窮多人進(jìn)行消息的傳播,而一個(gè)人同時(shí)又可以得到來自數(shù)量級(jí)為萬級(jí)以上用戶的消息,這對(duì)大用戶量的應(yīng)用提出了新的要求。和其他網(wǎng)絡(luò)溝通工具相比,現(xiàn)有的IM是對(duì)話式的,交互方式最原始也最自然,但是效率較低,通常需要通過很多對(duì)話才能表達(dá)出一個(gè)完整的意思。博客(blog)是文檔式的,沒有明確的對(duì)話對(duì)象,博主(blogger)可以有個(gè)人風(fēng)格或者定位,意思表示相對(duì)比較完整,但是寫blog的門檻較高。微博(micro-blogging)采用短消息的形式,也沒有明確對(duì)象, 但是意思相對(duì)完整。寫微博的門檻很低,可以是一句話,也可以是一聲感嘆。所以,相比于 IM和blog而言,twitter等微博工具的信息傳遞效率更高,而使用門檻更低。在現(xiàn)有的微博客戶端中,微博消息是按時(shí)間順序一并呈現(xiàn)的,信息呈現(xiàn)方式相對(duì)松散,缺少一定的分類聚合策略。對(duì)于整合在IM客戶端的微博模塊而言,微博消息也僅是在QQ主面板上按時(shí)間順序呈現(xiàn)。進(jìn)一步地,內(nèi)存占用量是衡量一個(gè)計(jì)算機(jī)應(yīng)用工具性能的重要指標(biāo),特別是對(duì)于微博客戶端這種大批量消息展示的應(yīng)用軟件,隨著用戶收到消息的增多,在界面上展示的信息就越來越多,與此同時(shí),該應(yīng)用軟件的內(nèi)存占用勢(shì)必越來越大,如果沒有一個(gè)合理的內(nèi)存使用策略,將產(chǎn)生非常嚴(yán)重的后果。
發(fā)明內(nèi)容
本發(fā)明提供了一種微博客戶端、微博消息的聚合方法以及即時(shí)通信客戶端。在本發(fā)明提供的一種微博客戶端中,包括消息拉取模塊,用于根據(jù)地點(diǎn)信息從外部的網(wǎng)絡(luò)服務(wù)器拉取微博消息;
消息池,用于存儲(chǔ)所述消息拉取模塊拉取到的微博消息;地理頁服務(wù)模塊,用于生成一個(gè)或者多個(gè)地理頁,根據(jù)拉取到的微博消息對(duì)應(yīng)的地點(diǎn)信息在相應(yīng)的地理頁上展示所述微博消息。所述消息拉取模塊用于根據(jù)該微博客戶端的身份信息獲得對(duì)應(yīng)的本地地點(diǎn)信息,并將該本地地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端。所述消息拉取模塊用于將該微博客戶端的用戶所選擇的歷史地點(diǎn)信息或者所述網(wǎng)絡(luò)服務(wù)器提供的熱門地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端。所述地理頁服務(wù)模塊包括邏輯管理子模塊,用于設(shè)置消息拉取策略;則所述消息拉取模塊進(jìn)一步用于根據(jù)所述消息拉取策略和所述地點(diǎn)信息從所述網(wǎng)絡(luò)服務(wù)器拉取微博消息。所述消息拉取策略包括單次拉取消息數(shù)和拉取消息總數(shù);則所述消息拉取模塊用于根據(jù)所述單次拉取消息數(shù)一次性從所述網(wǎng)絡(luò)服務(wù)器拉取相應(yīng)數(shù)量的微博消息,在檢測(cè)到地理頁的滾動(dòng)條拉到底端時(shí)觸發(fā)下一次拉取,并在所拉取的消息數(shù)量達(dá)到所述拉取消息總數(shù)時(shí)停止微博消息的拉取。所述消息池進(jìn)一步用于在所存儲(chǔ)的消息數(shù)量到達(dá)消息存儲(chǔ)門限時(shí),根據(jù)消息淘汰策略釋放對(duì)應(yīng)的微博消肩、ο所述消息池用于維護(hù)自身所存儲(chǔ)的一條或者多條微博消息的引用計(jì)數(shù),并根據(jù)所述引用計(jì)數(shù)確定消息淘汰策略。所述消息池用于監(jiān)視一個(gè)或者多個(gè)地理頁,當(dāng)一個(gè)地理頁上顯示一條微博消息時(shí),將該微博消息的引用計(jì)數(shù)加一,當(dāng)一個(gè)地理頁被析構(gòu)時(shí),將該地理頁上原先所顯示的所有微博消息的引用計(jì)數(shù)減一。所述地理頁服務(wù)模塊包括展示子模塊,用于在生成一個(gè)或者多個(gè)地理頁時(shí),查找所述微博客戶端中的容器池判斷是否存在可使用的控件,如果存在則從所述容器池獲取控件,并將所述微博消息填充到所獲取的控件中;如果不存在則創(chuàng)建所需的控件,并將所述微博消息填充到所創(chuàng)建的控件中。所述展示子模塊進(jìn)一步用于將所生成的一個(gè)或者多個(gè)地理頁析構(gòu),并將該地理頁的控件存儲(chǔ)到所述容器池。在本發(fā)明提供的一種微博消息的聚合方法中,包括微博客戶端根據(jù)地點(diǎn)信息從網(wǎng)絡(luò)服務(wù)器拉取微博消息并存儲(chǔ);所述微博客戶端生成一個(gè)或者多個(gè)地理頁,根據(jù)拉取到的微博消息對(duì)應(yīng)的地點(diǎn)信息在相應(yīng)的地理頁上展示所述微博消息。所述微博客戶端根據(jù)地點(diǎn)信息從網(wǎng)絡(luò)服務(wù)器拉取微博消息包括
所述微博客戶端根據(jù)其身份信息獲得對(duì)應(yīng)的本地地點(diǎn)信息,并將該本地地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端。所述微博客戶端根據(jù)地點(diǎn)信息從網(wǎng)絡(luò)服務(wù)器拉取微博消息包括所述微博客戶端將其用戶所選擇的歷史地點(diǎn)信息或者所述網(wǎng)絡(luò)服務(wù)器提供的熱門地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端。該方法進(jìn)一步包括所述微博客戶端根據(jù)預(yù)先設(shè)置的單次拉取消息數(shù)一次性從所述網(wǎng)絡(luò)服務(wù)器拉取相應(yīng)數(shù)量的微博消息,在檢測(cè)到地理頁的滾動(dòng)條拉到底端時(shí)觸發(fā)下一次拉取,并在所拉取的消息數(shù)量達(dá)到預(yù)先設(shè)置的拉取消息總數(shù)時(shí)停止微博消息的拉取。該方法進(jìn)一步包括所述微博客戶端監(jiān)視一個(gè)或者多個(gè)地理頁,當(dāng)一個(gè)地理頁上顯示一條微博消息時(shí),將該微博消息的引用計(jì)數(shù)加一,當(dāng)一個(gè)地理頁被析構(gòu)時(shí),將該地理頁上原先所顯示的所有微博消息的引用計(jì)數(shù)減一,根據(jù)所述引用計(jì)數(shù)確定消息淘汰策略,以釋放自身所存儲(chǔ)的微博消息。該方法進(jìn)一步包括在生成一個(gè)或者多個(gè)地理頁時(shí),所述微博客戶端判斷是否存在可使用的控件,如果存在則將所述微博消息填充到可使用的控件中進(jìn)行展示;如果不存在則創(chuàng)建所需的控件,并將所述微博消息填充到所創(chuàng)建的控件中進(jìn)行展示。所述身份信息為IP地址。在本發(fā)明提供的一種即時(shí)通信客戶端中,包括基礎(chǔ)服務(wù)模塊,用于存儲(chǔ)地點(diǎn)信息和關(guān)鍵key值的轉(zhuǎn)換表;微博模塊,用于根據(jù)所述轉(zhuǎn)換表將作為聚合維度的地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的key 值,向外部的網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,并生成一個(gè)或者多個(gè)地理頁,根據(jù)拉取到的微博消息對(duì)應(yīng)的地點(diǎn)信息在相應(yīng)的地理頁上展示所述微博消息。所述微博模塊用于根據(jù)該即時(shí)通信客戶端的身份信息確定本地地點(diǎn)信息,并根據(jù)所述轉(zhuǎn)換表將所確定的本地地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的key值。所述微博模塊用于根據(jù)所述轉(zhuǎn)換表將該即時(shí)通信客戶端的用戶所選擇的歷史地點(diǎn)信息或者所述網(wǎng)絡(luò)服務(wù)器提供的熱門地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的key值。通過本發(fā)明提供的客戶端和方法,微博消息能夠按地點(diǎn)信息聚合,給用戶獲取微博消息帶來便利。
圖1為本發(fā)明一個(gè)具體實(shí)現(xiàn)中微博客戶端的結(jié)構(gòu)示意圖;圖2為本發(fā)明一個(gè)實(shí)施例中根據(jù)地點(diǎn)信息進(jìn)行微博消息聚合的方法流程圖;圖3為IM客戶端同城廣播地理頁的實(shí)現(xiàn)效果圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。在當(dāng)前主流的微博客戶端的應(yīng)用中,用戶十分希望能了解到其所在地點(diǎn)或其它熱門地點(diǎn)的微博消息(也可稱為廣播消息)。如果可以讓用戶通過地區(qū)分類的形式直接查找相應(yīng)地區(qū)的所有微博消息,則是在一定程度上實(shí)現(xiàn)了對(duì)信息的分類聚合管理。具體實(shí)現(xiàn)時(shí), 可以是提供用戶當(dāng)前所在地點(diǎn)的同城廣播,記錄用戶選擇過的城市信息并提供該城市的微博消息,以及采用靈活的熱門地點(diǎn)推送策略方便用戶獲取微博消息等。相應(yīng)地,本發(fā)明提出了一種將微博消息按照地點(diǎn)信息聚合的微博客戶端、微博消息聚合方法以及即時(shí)通信客戶端。本發(fā)明提供的客戶端采用松散耦合的結(jié)構(gòu),并且該客戶端對(duì)服務(wù)器(server)施加盡可能少的負(fù)載量。為了實(shí)現(xiàn)松散耦合的結(jié)構(gòu),該客戶端采用分層模型的設(shè)計(jì)思路實(shí)現(xiàn),將相關(guān)的邏輯功能封裝在同一個(gè)層次內(nèi),層與層之間采用接口以及抽象的數(shù)據(jù)結(jié)構(gòu)表達(dá)和通信,以使各層模型的可復(fù)用性更好。在本發(fā)明一個(gè)實(shí)施例中,該客戶端的結(jié)構(gòu)共分為3層(1)表現(xiàn)層,主要用于封裝以及與用戶的交互。(2)業(yè)務(wù)邏輯層,主要用于功能性的邏輯處理、狀態(tài)存儲(chǔ)等。需要指出,業(yè)務(wù)邏輯層是客戶端的核心功能模塊。(3)數(shù)據(jù)層,用于數(shù)據(jù)的獲取(包括網(wǎng)絡(luò)拉取等)與組織。圖1為本發(fā)明一個(gè)具體實(shí)現(xiàn)中微博客戶端的結(jié)構(gòu)示意圖,包括消息拉取模塊 101、消息池102、地理頁服務(wù)模塊103。進(jìn)一步地,微博客戶端還包括容器池104。其中,消息拉取模塊101,用于根據(jù)地點(diǎn)信息從外部的網(wǎng)絡(luò)服務(wù)器拉取微博消息。消息池102,用于存儲(chǔ)消息拉取模塊101拉取到的微博消息。地理頁服務(wù)模塊103,用于生成一個(gè)或者多個(gè)地理頁,根據(jù)拉取到的微博消息對(duì)應(yīng)的地點(diǎn)信息在相應(yīng)的地理頁上展示所述微博消息。具體實(shí)現(xiàn)時(shí),地理頁服務(wù)模塊103可以用于將同城廣播地理頁展示給用戶,該地理頁上展示的微博消息都是由與該用戶同城的其它用戶發(fā)布的。需要指出,每條微博消息都有其對(duì)應(yīng)的地點(diǎn)信息。在一個(gè)具體實(shí)現(xiàn)中,地理頁服務(wù)模塊103在展示消息之前,需要判斷消息池102中是否存儲(chǔ)有所需展示的微博消息。如果沒有,地理頁服務(wù)模塊103將觸發(fā)消息拉取模塊101 進(jìn)行微博消息的拉取。消息拉取模塊101從外部的網(wǎng)絡(luò)服務(wù)器拉取到微博消息后,將其存儲(chǔ)在消息池102中,同時(shí)提供給地理頁服務(wù)模塊103進(jìn)行展示。具體地,消息拉取模塊101可以根據(jù)該微博客戶端的身份信息(比如IP地址)獲得對(duì)應(yīng)的本地地點(diǎn)信息,并將該本地地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端?;蛘撸⒗∧K101將該微博客戶端的用戶所選擇的歷史地點(diǎn)信息或者所述網(wǎng)絡(luò)服務(wù)器提供的熱門地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端。為了用戶更加便利的使用,微博客戶端將記錄用戶的歷史地點(diǎn)信息(比如最新一次查看的地點(diǎn)信息),保存在本地文件中,使得用戶在下次登陸時(shí)可以方便地查找到自己曾經(jīng)關(guān)注過的地區(qū)。另外,為了采用更加靈活的熱門地點(diǎn)策略,可以將熱門地點(diǎn)信息以配置文件的形式打包在微博客戶端的安裝包中,同時(shí)部署一份相同的內(nèi)容在網(wǎng)絡(luò)服務(wù)器。微博客戶端登陸成功后,該客戶端會(huì)攜帶相應(yīng)的配置文件版本號(hào)詢問網(wǎng)絡(luò)服務(wù)器,如果網(wǎng)絡(luò)服務(wù)器發(fā)現(xiàn)該版本號(hào)和自身所存儲(chǔ)內(nèi)容的版本號(hào)不符,比如客戶端提供的版本號(hào)相對(duì)較舊,則讓客戶端啟動(dòng)下載的過程獲得服務(wù)器上保存的配置文件。這樣,微博客戶端始終都能讀取到最新的配置文件,并根據(jù)當(dāng)前的熱點(diǎn)城市及時(shí)改變自身熱門地點(diǎn)的配置,而無需改變微博客戶端的任何代碼邏輯,并可以做到對(duì)所有客戶端都能透明推送。在實(shí)際應(yīng)用中,用戶可以通過點(diǎn)擊微博客戶端的單條消息頁中的地點(diǎn),進(jìn)入同城廣播地理頁。其中,同城廣播地理頁的標(biāo)題(title)區(qū)域包括1、用戶當(dāng)前所在地點(diǎn),即該用戶的本地地點(diǎn)。點(diǎn)擊該地點(diǎn)后,當(dāng)前地理頁的所有消息將會(huì)被刷新。2、歷史地點(diǎn),比如用戶所選擇的地點(diǎn),包括最近一次曾經(jīng)選擇過的地點(diǎn)或者當(dāng)前選擇的地點(diǎn)等。3、由服務(wù)器推送的一個(gè)或者多個(gè)熱門地點(diǎn)。其中,熱門地點(diǎn)可以由服務(wù)器運(yùn)營(yíng),根據(jù)當(dāng)前的熱門程度動(dòng)態(tài)改變。進(jìn)一步地,地理頁服務(wù)模塊103中設(shè)置有邏輯管理子模塊105,其用于設(shè)置消息拉取策略,對(duì)多條微博消息按照地理的聚合進(jìn)行邏輯管理。相應(yīng)地,消息拉取模塊101進(jìn)一步用于根據(jù)所述消息拉取策略和所述地點(diǎn)信息從所述網(wǎng)絡(luò)服務(wù)器拉取微博消息。具體地,所述消息拉取策略包括單次拉取消息數(shù)和拉取消息總數(shù)。相應(yīng)地,所述消息拉取模塊101用于根據(jù)所述單次拉取消息數(shù)一次性從所述網(wǎng)絡(luò)服務(wù)器拉取相應(yīng)數(shù)量的微博消息,在檢測(cè)到地理頁的滾動(dòng)條拉到底端時(shí)觸發(fā)下一次拉取,并在所拉取的消息數(shù)量達(dá)到所述拉取消息總數(shù)時(shí)停止微博消息的拉取。實(shí)際應(yīng)用中,由于同一城市的廣播消息數(shù)量十分巨大,如果一次性將所有廣播消息的轉(zhuǎn)播鏈條全部拉取下來,勢(shì)必給服務(wù)器帶來巨大的負(fù)載量。為了在滿足服務(wù)質(zhì)量的同時(shí)盡可能降低服務(wù)器的負(fù)載量,在微博客戶端可以使用一定的消息拉取策略。通過考慮客戶端的應(yīng)用場(chǎng)景,在本發(fā)明的具體實(shí)現(xiàn)中引入批量多次的策略。比如,考慮到客戶端與服務(wù)器一次網(wǎng)絡(luò)交換的長(zhǎng)度限制(比如最小字節(jié)數(shù)),以及單條廣播消息的平均長(zhǎng)度,可以采用一次性拉取15條廣播消息的策略,這15條廣播消息是根據(jù)地點(diǎn)信息聚合在一起,從而被一次性拉取到微博客戶端的。也就是說,可以設(shè)置單次拉取消息數(shù),避免每次拉取過多廣播消息。進(jìn)一步地,當(dāng)用戶看完本次拉取的15條消息并將滾動(dòng)條拉到底端時(shí)將觸發(fā)下一次批量拉取的過程,直到總計(jì)拉取120條消息后,不再響應(yīng)滾動(dòng)條底端的觸發(fā)事件進(jìn)行拉取,而是提示給用戶查看更多的字樣,讓用戶手動(dòng)點(diǎn)擊“更多”按鈕跳轉(zhuǎn)到相應(yīng)網(wǎng)頁。在實(shí)際應(yīng)用中, 單次拉取消息數(shù)和拉取消息總數(shù)可根據(jù)需要進(jìn)行調(diào)整和修改。需要指出,在微博客戶端設(shè)置的消息池可用于存儲(chǔ)所有的消息內(nèi)容,并在消息數(shù)量到達(dá)預(yù)設(shè)的界限后采用一定的淘汰算法釋放不再需要的消息。也就是說,消息池102也可以進(jìn)一步用于在所存儲(chǔ)的消息數(shù)量到達(dá)消息存儲(chǔ)門限時(shí),根據(jù)消息淘汰策略釋放對(duì)應(yīng)的微博消息。具體地,所述消息池102用于記錄并維護(hù)自身所存儲(chǔ)的一條或者多條微博消息的引用計(jì)數(shù),并根據(jù)所述引用計(jì)數(shù)確定消息淘汰策略。比如,某個(gè)頁面上顯示一條消息,則該條消息的引用計(jì)數(shù)加一,反之當(dāng)該頁面析構(gòu)的時(shí)候,對(duì)該條消息的引用計(jì)數(shù)減一。當(dāng)某條消息的引用計(jì)數(shù)為1時(shí),說明沒有控件顯示該條消息,則可以釋放該條消息的內(nèi)存數(shù)據(jù)。 可以看出,所述消息池102進(jìn)一步用于監(jiān)視一個(gè)或者多個(gè)地理頁,當(dāng)一個(gè)地理頁上顯示一條微博消息時(shí),將該微博消息的引用計(jì)數(shù)加一,當(dāng)一個(gè)地理頁被析構(gòu)時(shí),將該地理頁上原先所顯示的所有微博消息的引用計(jì)數(shù)減一。具體實(shí)現(xiàn)時(shí),每一條微博消息使用的控件形式都是類似的,具有很大的復(fù)用性,該控件可以包括控件頁和控件項(xiàng)(item)等。因此,地理頁服務(wù)模塊103中設(shè)置有展示子模塊 106,用于在生成一個(gè)或者多個(gè)地理頁時(shí),查找容器池104判斷是否存在可使用的控件,如果存在則從所述容器池104獲取控件,并將微博消息填充到所獲取的控件中;如果不存在則創(chuàng)建所需的控件,并將微博消息填充到所創(chuàng)建的控件中。填充到控件中的微博消息可能是消息池102中原先存儲(chǔ)的,也可能是消息拉取模塊101新從網(wǎng)絡(luò)服務(wù)器拉取到的。進(jìn)一步地,地理頁服務(wù)模塊103中設(shè)置的展示子模塊106用于將所生成的一個(gè)或者多個(gè)地理頁析構(gòu),并將該地理頁的控件存儲(chǔ)到所述容器池104。也就是說,當(dāng)某一地理頁創(chuàng)建的時(shí)候,地理頁服務(wù)模塊103會(huì)首先查找容器池104 當(dāng)前是否有可使用的資源,如果有,則用相應(yīng)的消息內(nèi)容填充對(duì)應(yīng)的控件,而不需再付出創(chuàng)建控件頁及每個(gè)控件項(xiàng)的消耗;如果沒有才執(zhí)行控件的創(chuàng)建。當(dāng)用戶點(diǎn)擊回退按鈕時(shí),表示當(dāng)前的地理頁可以被析構(gòu),則首先對(duì)當(dāng)前地理頁所顯示的所有消息在消息池102中減少相應(yīng)的引用計(jì)數(shù),另外將控件頁及控件項(xiàng)加入到容器池104中以備下次使用。需要指出,地理頁服務(wù)模塊103中的邏輯管理子模塊105負(fù)責(zé)管理和維護(hù)展示子模塊106的生命周期;而展示子模塊106只負(fù)責(zé)界面顯示、用戶操作等與界面相關(guān)的處理。并且,為了更有效的降低界面刷新帶來的屏幕閃動(dòng)以及性能消耗,每個(gè)控件項(xiàng)都采用自繪的方式實(shí)現(xiàn),即自己計(jì)算控件內(nèi)部各個(gè)區(qū)域的大小及相應(yīng)位置,從而在滿足用戶的使用要求的情況下,盡可能少的觸發(fā)界面控件的重新排布來達(dá)到更為理想的性能消耗。 比如,在用戶拖動(dòng)客戶端界面大小的時(shí)候,并不是在用戶拖動(dòng)鼠標(biāo)的每一時(shí)刻都觸發(fā)界面的重新排布,而只是在用戶放下鼠標(biāo)的瞬間才觸發(fā)一次界面重新排布??傊?,內(nèi)存的占用量是衡量桌面應(yīng)用程序性能的一個(gè)重要指標(biāo),隨著聚合到微博客戶端的微博消息的增多,其內(nèi)存占用的增長(zhǎng)不可避免。在本發(fā)明的具體實(shí)現(xiàn)中,可通過消息池102以及容器池104這兩個(gè)單元降低內(nèi)存消耗。具體地,對(duì)于消息池102,采用消息淘汰策略;對(duì)于容器池104,采用控件復(fù)用策略。在本發(fā)明一個(gè)實(shí)施例中,微博客戶端采用VS2005的ATL工程作為開發(fā)環(huán)境實(shí)現(xiàn)。 該微博客戶端可以是獨(dú)立的客戶端,也可以是即時(shí)通信客戶端中的一個(gè)模塊。相應(yīng)地,該即時(shí)通信客戶端包括基礎(chǔ)服務(wù)模塊,用于存儲(chǔ)地點(diǎn)信息和關(guān)鍵key值的轉(zhuǎn)換表;微博模塊, 用于根據(jù)所述轉(zhuǎn)換表將作為聚合維度的地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的key值,向外部的網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,并生成一個(gè)或者多個(gè)地理頁,根據(jù)拉取到的微博消息對(duì)應(yīng)的地點(diǎn)信息在相應(yīng)的地理頁上展示所述微博消息。該即時(shí)通信客戶端還可以包括天氣模塊,與所述微博模塊共用存儲(chǔ)在基礎(chǔ)服務(wù)模塊中的轉(zhuǎn)換表。也就是說,為了更好的復(fù)用轉(zhuǎn)換表,本發(fā)明一個(gè)具體實(shí)現(xiàn)將相應(yīng)的邏輯從天氣模塊等插件中抽離出來,放在基礎(chǔ)服務(wù)模塊這一公共的APP層之中。為了獲取用戶所在地點(diǎn)的信息從而可以跳轉(zhuǎn)到用戶所在城市的頁面,在QQ登陸的過程中做了一次與服務(wù)器的交互,整個(gè)過程如圖2所示。步驟201:客戶端登錄?;蛘哒f,用戶通過客戶端登錄到服務(wù)器。步驟202 客戶端將自身的身份信息(比如IP地址)上報(bào)服務(wù)器。步驟203 服務(wù)器根據(jù)身份信息查找對(duì)應(yīng)的地點(diǎn)信息,并確定該客戶端的key值。 需要指出,key值可以作為聚合消息拉取的索引,所謂聚合消息是指按照一定維度(比如地點(diǎn)信息)聚合的多條微博消息。步驟204:客戶端將自身的身份信息轉(zhuǎn)換為本地地點(diǎn)信息向用戶顯示,并將自身的身份信息轉(zhuǎn)換為key值,在發(fā)出消息拉取請(qǐng)求時(shí)攜帶所述key值。需要指出,在客戶端與服務(wù)器通信的過程中傳輸key值,主要是為了有效地減小數(shù)據(jù)包的長(zhǎng)度,客戶端、服務(wù)器維護(hù)同一份轉(zhuǎn)換表,即可將相對(duì)較長(zhǎng)的國(guó)家、省、市名稱轉(zhuǎn)換為字節(jié)數(shù)更為精簡(jiǎn)的key值,從而有效減少網(wǎng)絡(luò)間數(shù)據(jù)通信的時(shí)間與負(fù)載量。在本發(fā)明一個(gè)具體實(shí)現(xiàn)中,轉(zhuǎn)換表可以是地點(diǎn)信息與key值的對(duì)應(yīng)表。步驟205 服務(wù)器將與該key值對(duì)應(yīng)的微博消息聚合后發(fā)送給客戶端。圖3為IM客戶端同城廣播地理頁的實(shí)現(xiàn)效果圖。其中,哈爾濱為用戶的本地地點(diǎn)。 因此,用戶從單條消息頁跳轉(zhuǎn)到同城廣播地理頁時(shí),首先展示的是哈爾濱的廣播消息。作為示例,海南是用戶所選擇的歷史地點(diǎn),而北京、上海、深圳、廣州是4個(gè)熱門地點(diǎn)。用戶點(diǎn)擊北京,就會(huì)進(jìn)入北京的地理頁,展示與北京對(duì)應(yīng)的廣播消息。采用本發(fā)明提供的技術(shù)方案,用戶可以很方便、快捷地查找到所在地點(diǎn)(比如城市、地區(qū)等)其它用戶發(fā)布的微博消息或者廣播消息。進(jìn)一步地,微博客戶端或者具有微博模塊的即時(shí)通信客戶端還可以為使用該客戶端的用戶提供諸如歷史地點(diǎn)、熱門地點(diǎn)等信息,使得用戶能夠獲得與歷史地點(diǎn)、熱門地點(diǎn)相關(guān)的微博消息,從而為用戶提供更有價(jià)值、 更靈活的服務(wù)。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種微博客戶端,其特征在于,包括消息拉取模塊,用于根據(jù)地點(diǎn)信息從外部的網(wǎng)絡(luò)服務(wù)器拉取微博消息; 消息池,用于存儲(chǔ)所述消息拉取模塊拉取到的微博消息;地理頁服務(wù)模塊,用于生成一個(gè)或者多個(gè)地理頁,根據(jù)拉取到的微博消息對(duì)應(yīng)的地點(diǎn)信息在相應(yīng)的地理頁上展示所述微博消息。
2.根據(jù)權(quán)利要求1所述的微博客戶端,其特征在于,所述消息拉取模塊用于根據(jù)該微博客戶端的身份信息獲得對(duì)應(yīng)的本地地點(diǎn)信息,并將該本地地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端。
3.根據(jù)權(quán)利要求1所述的微博客戶端,其特征在于,所述消息拉取模塊用于 將該微博客戶端的用戶所選擇的歷史地點(diǎn)信息或者所述網(wǎng)絡(luò)服務(wù)器提供的熱門地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的微博客戶端,其特征在于,所述地理頁服務(wù)模塊包括邏輯管理子模塊,用于設(shè)置消息拉取策略;則所述消息拉取模塊進(jìn)一步用于根據(jù)所述消息拉取策略和所述地點(diǎn)信息從所述網(wǎng)絡(luò)服務(wù)器拉取微博消息。
5.根據(jù)權(quán)利要求4所述的微博客戶端,其特征在于,所述消息拉取策略包括單次拉取消息數(shù)和拉取消息總數(shù);則所述消息拉取模塊用于根據(jù)所述單次拉取消息數(shù)一次性從所述網(wǎng)絡(luò)服務(wù)器拉取相應(yīng)數(shù)量的微博消息,在檢測(cè)到地理頁的滾動(dòng)條拉到底端時(shí)觸發(fā)下一次拉取,并在所拉取的消息數(shù)量達(dá)到所述拉取消息總數(shù)時(shí)停止微博消息的拉取。
6.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的微博客戶端,其特征在于,所述消息池進(jìn)一步用于 在所存儲(chǔ)的消息數(shù)量到達(dá)消息存儲(chǔ)門限時(shí),根據(jù)消息淘汰策略釋放對(duì)應(yīng)的微博消息。
7.根據(jù)權(quán)利要求6所述的微博客戶端,其特征在于,所述消息池用于維護(hù)自身所存儲(chǔ)的一條或者多條微博消息的引用計(jì)數(shù),并根據(jù)所述引用計(jì)數(shù)確定消息淘汰策略。
8.根據(jù)權(quán)利要求7所述的微博客戶端,其特征在于,所述消息池用于監(jiān)視一個(gè)或者多個(gè)地理頁,當(dāng)一個(gè)地理頁上顯示一條微博消息時(shí),將該微博消息的引用計(jì)數(shù)加一,當(dāng)一個(gè)地理頁被析構(gòu)時(shí),將該地理頁上原先所顯示的所有微博消息的引用計(jì)數(shù)減一。
9.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的微博客戶端,其特征在于,所述地理頁服務(wù)模塊包括展示子模塊,用于在生成一個(gè)或者多個(gè)地理頁時(shí),查找所述微博客戶端中的容器池判斷是否存在可使用的控件,如果存在則從所述容器池獲取控件,并將所述微博消息填充到所獲取的控件中;如果不存在則創(chuàng)建所需的控件,并將所述微博消息填充到所創(chuàng)建的控件中。
10.根據(jù)權(quán)利要求9所述的微博客戶端,其特征在于,所述展示子模塊進(jìn)一步用于 將所生成的一個(gè)或者多個(gè)地理頁析構(gòu),并將該地理頁的控件存儲(chǔ)到所述容器池。
11.一種微博消息的聚合方法,其特征在于,包括微博客戶端根據(jù)地點(diǎn)信息從網(wǎng)絡(luò)服務(wù)器拉取微博消息并存儲(chǔ);所述微博客戶端生成一個(gè)或者多個(gè)地理頁,根據(jù)拉取到的微博消息對(duì)應(yīng)的地點(diǎn)信息在相應(yīng)的地理頁上展示所述微博消息。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述微博客戶端根據(jù)地點(diǎn)信息從網(wǎng)絡(luò)服務(wù)器拉取微博消息包括所述微博客戶端根據(jù)其身份信息獲得對(duì)應(yīng)的本地地點(diǎn)信息,并將該本地地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端。
13.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述微博客戶端根據(jù)地點(diǎn)信息從網(wǎng)絡(luò)服務(wù)器拉取微博消息包括所述微博客戶端將其用戶所選擇的歷史地點(diǎn)信息或者所述網(wǎng)絡(luò)服務(wù)器提供的熱門地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的關(guān)鍵key值,向所述網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求, 將所述網(wǎng)絡(luò)服務(wù)器中具有對(duì)應(yīng)key值的微博消息拉取到所述微博客戶端。
14.根據(jù)權(quán)利要求11-13任一項(xiàng)所述的方法,其特征在于,進(jìn)一步包括所述微博客戶端根據(jù)預(yù)先設(shè)置的單次拉取消息數(shù)一次性從所述網(wǎng)絡(luò)服務(wù)器拉取相應(yīng)數(shù)量的微博消息,在檢測(cè)到地理頁的滾動(dòng)條拉到底端時(shí)觸發(fā)下一次拉取,并在所拉取的消息數(shù)量達(dá)到預(yù)先設(shè)置的拉取消息總數(shù)時(shí)停止微博消息的拉取。
15.根據(jù)權(quán)利要求11-13任一項(xiàng)所述的方法,其特征在于,進(jìn)一步包括所述微博客戶端監(jiān)視一個(gè)或者多個(gè)地理頁,當(dāng)一個(gè)地理頁上顯示一條微博消息時(shí),將該微博消息的引用計(jì)數(shù)加一,當(dāng)一個(gè)地理頁被析構(gòu)時(shí),將該地理頁上原先所顯示的所有微博消息的引用計(jì)數(shù)減一,根據(jù)所述引用計(jì)數(shù)確定消息淘汰策略,以釋放自身所存儲(chǔ)的微博消息。
16.根據(jù)權(quán)利要求11-13任一項(xiàng)所述的方法,其特征在于,進(jìn)一步包括在生成一個(gè)或者多個(gè)地理頁時(shí),所述微博客戶端判斷是否存在可使用的控件,如果存在則將所述微博消息填充到可使用的控件中進(jìn)行展示;如果不存在則創(chuàng)建所需的控件,并將所述微博消息填充到所創(chuàng)建的控件中進(jìn)行展示。
17.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述身份信息為IP地址。
18.—種即時(shí)通信客戶端,其特征在于,包括基礎(chǔ)服務(wù)模塊,用于存儲(chǔ)地點(diǎn)信息和關(guān)鍵key值的轉(zhuǎn)換表;微博模塊,用于根據(jù)所述轉(zhuǎn)換表將作為聚合維度的地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的key值,向外部的網(wǎng)絡(luò)服務(wù)器發(fā)出攜帶所述key值的消息拉取請(qǐng)求,并生成一個(gè)或者多個(gè)地理頁,根據(jù)拉取到的微博消息對(duì)應(yīng)的地點(diǎn)信息在相應(yīng)的地理頁上展示所述微博消息。
19.根據(jù)權(quán)利要求18所述的即時(shí)通信客戶端,其特征在于,所述微博模塊用于根據(jù)該即時(shí)通信客戶端的身份信息確定本地地點(diǎn)信息,并根據(jù)所述轉(zhuǎn)換表將所確定的本地地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的key值。
20.根據(jù)權(quán)利要求18所述的即時(shí)通信客戶端,其特征在于,所述微博模塊用于根據(jù)所述轉(zhuǎn)換表將該即時(shí)通信客戶端的用戶所選擇的歷史地點(diǎn)信息或者所述網(wǎng)絡(luò)服務(wù)器提供的熱門地點(diǎn)信息轉(zhuǎn)換為對(duì)應(yīng)的key值。
全文摘要
本發(fā)明提供了一種微博客戶端、微博消息的聚合方法以及即時(shí)通信客戶端。該微博客戶端包括消息拉取模塊,用于根據(jù)地點(diǎn)信息從外部的網(wǎng)絡(luò)服務(wù)器拉取微博消息;消息池,用于存儲(chǔ)所述消息拉取模塊拉取到的微博消息;地理頁服務(wù)模塊,用于生成一個(gè)或者多個(gè)地理頁,根據(jù)拉取到的微博消息對(duì)應(yīng)的地點(diǎn)信息在相應(yīng)的地理頁上展示所述微博消息。通過本發(fā)明提供的客戶端和方法,微博消息能夠按地點(diǎn)信息聚合,給用戶獲取微博消息帶來便利。
文檔編號(hào)H04L12/58GK102413065SQ201010293479
公開日2012年4月11日 申請(qǐng)日期2010年9月19日 優(yōu)先權(quán)日2010年9月19日
發(fā)明者劉紅杰, 庫(kù)宇 申請(qǐng)人:騰訊科技(深圳)有限公司