如何實現android和伺服器保持長連線

2021-08-19 18:45:31 字數 1450 閱讀 8045

這種功能實際上就是資料同步,同時要考慮手機本身、電量、網路流量等等限制因素,所以通常在移動端上有一下兩個解決方案:

1.一種是定時去server查詢資料,通常是使用http協議來訪問web伺服器,稱polling(輪詢);

2.還有一種是移動端和伺服器建立長連線,使用xmpp長連線,稱push(推送)。

從耗費的電量、流量和資料延遲性各方面來說,push有明顯的優勢。但是使用push的缺點是:

對於客戶端:實現和維護相對成本高,在移動無線網路下維護長連線,相對有一些技術上的開發難度。

對於伺服器:如何實現多核併發,cpu作業排程,數量龐大的長連線併發維護等技術,仍存在開發難點。

在講述push方案的原理前,我們先了解一下移動無線網路的特點。

移動無線網路的特點:

ggsn(gateway gprs support node 閘道器gprs支援結點)模組就實現了nat功能。

push在android平台上長連線的實現:

alarmmanager:alarmmanager類是屬於android系統封裝好來管理rtc模組的管理類。這裡就涉及到rtc模組,要更好地了解兩者的區別,就要明白兩者真正的區別。

rtc(real- time clock)實時鬧鐘在乙個嵌入式系統中,通常採用rtc來提供可靠的系統時間,包括時分秒和年月日等;而且要求在系統處於關機狀態下它也能夠正常工作(通常採用後備電池供電),它的外圍也不需要太多的輔助電路,典型的就是只需要乙個高精度的32.768khz晶體和電阻電容等。(如果對這方面感興趣,可以自己查閱相關資料,這裡就說個大概)好了,回來正題。所以,alarmmanager又稱全域性定時鬧鐘。這意味著,當我用使用alarmmanager來定時執行任務,cpu可以正常地休眠,只有在執行任務是,才喚醒cpu,這個過程是很短時間的。

下面簡單來說明其使用:

1.類似於timer功能:

//獲得鬧鐘管理器

alarmmanager am = (alarmmanager)getsystemservice(alarm_service);

//設定任務執行計畫

am.setrepeating(alarmmanager.elapsed_realtime, firsttime, 5*1000, sender);//從firsttime才開始執行,每隔5秒再執行

2.實現全域性定時功能:

//獲得鬧鐘管理器

alarmmanager am = (alarmmanager)getsystemservice(alarm_service);

//設定任務執行計畫

am.setrepeating(alarmmanager.elapsed_realtime_wakeup, firsttime, 5*1000, sender);//從firsttime才開始執行,每隔5秒再執行

總結:在android客戶端使用push推送時,應該使用alarmmanager來實現心跳功能,使其真正實現長連線。

電腦和伺服器主要

第3章 電腦和伺服器的構成 一台電腦是由許許多多的零部件組成,只有這些零部件組合在一起協調的工作,才能稱之為電腦 電腦發展到現在有很大的變化,但是工作原理卻沒有發生變化,其中包括,主機板,cpu,記憶體 硬碟,顯示卡,音效卡等等,下面將簡單的介紹組成電腦的各個零部件。3.1 機箱 3.2 電源 功能...

SVN如何斷開和伺服器的連線

我們平時在用svn和服務關聯,為了更好的管理資料,但是現在我們想要斷開當初建立的連線,想要取消關聯,應該怎麼操作呢?今天來說下 svn如何斷開和伺服器的連線 第一,我們開啟建立檔案的資料夾會看到,現在正常情況下,是有綠色對號顯示的 表示,現在連線正常,可以統一管理資料 第二,接下來,我們檢視導航 檢...

什麼是伺服器和伺服器的作用

伺服器的是什麼?什麼是伺服器 伺服器作為網路的節點,儲存 處理網路上80 的資料 資訊,因此也被稱為網路的靈魂。從廣義上講,伺服器是指網路中能對其它機器提供某些服務的計算機系統 如果乙個pc對外提供ftp服務,也可以叫伺服器 從狹義上講,伺服器是專指某些高效能計算機,能通過網路,對外提供服務。相對於...