真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

長連接android,長連接和短連接的區(qū)別

如何實現(xiàn)android和服務器的長連接?

轉載 這種功能實際上就是數(shù)據(jù)同步,同時要考慮手機本身、電量、網(wǎng)絡流量等等限制因素,所以通常在移動端上有一下兩個解決方案:

站在用戶的角度思考問題,與客戶深入溝通,找到資源網(wǎng)站設計與資源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設、成都網(wǎng)站設計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請虛擬主機、企業(yè)郵箱。業(yè)務覆蓋資源地區(qū)。

1.一種是定時去server查詢數(shù)據(jù),通常是使用HTTP協(xié)議來訪問web服務器,稱Polling(輪詢);

2.還有一種是移動端和服務器建立長連接,使用XMPP長連接,稱Push(推送)。

從耗費的電量、流量和數(shù)據(jù)延遲性各方面來說,Push有明顯的優(yōu)勢。但是使用Push的缺點是:

對于客戶端:實現(xiàn)和維護相對成本高,在移動無線網(wǎng)絡下維護長連接,相對有一些技術上的開發(fā)難度。

對于服務器:如何實現(xiàn)多核并發(fā),cpu作業(yè)調度,數(shù)量龐大的長連接并發(fā)維護等技術,仍存在開發(fā)難點。

在講述Push方案的原理前,我們先了解一下移動無線網(wǎng)絡的特點。

移動無線網(wǎng)絡的特點:

因為 IP v4 的 IP 量有限,運營商分配給手機終端的 IP 是運營商內網(wǎng)的 IP,手機要連接 Internet,就需要通過運營商的網(wǎng)關做一個網(wǎng)絡地址轉換(Network Address Translation,NAT)。簡單的說運營商的網(wǎng)關需要維護一個外網(wǎng) IP、端口到內網(wǎng) IP、端口的對應關系,以確保內網(wǎng)的手機可以跟 Internet 的服務器通訊

GGSN(Gateway GPRS

Support Node 網(wǎng)關GPRS支持結點)模塊就實現(xiàn)了NAT功能。

因為大部分移動無線網(wǎng)絡運營商都是為了減少網(wǎng)關的NAT映射表的負荷,所以如果發(fā)現(xiàn)鏈路中有一段時間沒有數(shù)據(jù)通訊時,會刪除其對應表,造成鏈路中斷。(關于NAT的作用及其原理可以查看我的另一篇博文:關于使用UDP(TCP)跨局域網(wǎng),NAT穿透的心得)

Push在Android平臺上長連接的實現(xiàn):

既然我們知道我們移動端要和Internet進行通信,必須通過運營商的網(wǎng)關,所以,為了不讓NAT映射表失效,我們需要定時向Internet發(fā)送數(shù)據(jù),因為只是為了不然NAT映射表失效,所以只需發(fā)送長度為0的數(shù)據(jù)即可。

這時候就要用到定時器,在android系統(tǒng)上,定時器通常有一下兩種:

1.java.util.Timer

2.android.app.AlarmManager

分析:

Timer:可以按照計劃或者時間周期來執(zhí)行相關的任務。但是Timer需要用WakeLock來讓CPU保持喚醒狀態(tài),才能保證任務的執(zhí)行,這樣子會消耗大量流量;當CPU處于休眠的時候,就不能喚醒執(zhí)行任務,所以應用于移動端明顯是不合適。

AlarmManager:AlarmManager類是屬于android系統(tǒng)封裝好來管理RTC模塊的管理類。這里就涉及到RTC模塊,要更好地了解兩者的區(qū)別,就要明白兩者真正的區(qū)別。

RTC(Real- Time Clock)實時鬧鐘在一個嵌入式系統(tǒng)中,通常采用RTC

來提供可靠的系統(tǒng)時間,包括時分秒和年月日等;而且要求在系統(tǒng)處于關機狀態(tài)下它也能夠正常工作(通常采用后備電池供電),它的外圍也不需要太多的輔助電路,典型的就是只需要一個高精度的32.768KHz

晶體和電阻電容等。(如果對這方面感興趣,可以自己查閱相關資料,這里就說個大概)

好了,回來正題。所以,AlarmManager又稱全局定時鬧鐘。這意味著,當我用使用AlarmManager來定時執(zhí)行任務,CPU可以正常地休眠,只有在執(zhí)行任務是,才喚醒CPU,這個過程是很短時間的。

下面簡單來說明其使用:

1.類似于Timer功能:

//獲得鬧鐘管理器

AlarmManager

am = (AlarmManager)getSystemService(ALARM_SERVICE);

//設置任務執(zhí)行計劃

am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000,

sender);//從firstTime才開始執(zhí)行,每隔5秒再執(zhí)行

2.實現(xiàn)全局定時功能:

//獲得鬧鐘管理器

AlarmManager

am = (AlarmManager)getSystemService(ALARM_SERVICE);

//設置任務執(zhí)行計劃

am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,

5*1000, sender);//從firstTime才開始執(zhí)行,每隔5秒再執(zhí)行

總結:在android客戶端使用Push推送時,應該使用AlarmManager來實現(xiàn)心跳功能,使其真正實現(xiàn)長連接。

android怎么實現(xiàn)HTTP長連接

轉載 這種功能實際上就是數(shù)據(jù)同步,同時要考慮手機本身、電量、網(wǎng)絡流量等等限制因素,所以通常在移動端上有一下兩個解決方案: 1.一種是定時去server查詢數(shù)據(jù),通常是使用HTTP協(xié)議來訪問web服務器,稱Polling(輪詢); 2.還有一種是移動端和服務器建立長連接,使用XMPP長連接,稱Push(推送)。從耗費的電量、流量和數(shù)據(jù)延遲性各方面來說,Push有明顯的優(yōu)勢。但是使用Push的缺點是: 對于客戶端:實現(xiàn)和維護相對成本高,在移動無線網(wǎng)絡下維護長連接,相對有一些技術上的開發(fā)難度。 對于服務器:如何實現(xiàn)多核并發(fā),cpu作業(yè)調度,數(shù)量龐大的長連接并發(fā)維護等技術,仍存在開發(fā)難點。在講述Push方案的原理前,我們先了解一下移動無線網(wǎng)絡的特點。 移動無線網(wǎng)絡的特點: 因為 IP v4 的 IP 量有限,運營商分配給手機終端的 IP 是運營商內網(wǎng)的 IP,手機要連接 Internet,就需要通過運營商的網(wǎng)關做一個網(wǎng)絡地址轉換(Network Address Translation,NAT)。簡單的說運營商的網(wǎng)關需要維護一個外網(wǎng) IP、端口到內網(wǎng) IP、端口的對應關系,以確保內網(wǎng)的手機可以跟 Internet 的服務器通訊 GGSN(Gateway GPRS Support Node 網(wǎng)關GPRS支持結點)模塊就實現(xiàn)了NAT功能。 因為大部分移動無線網(wǎng)絡運營商都是為了減少網(wǎng)關的NAT映射表的負荷,所以如果發(fā)現(xiàn)鏈路中有一段時間沒有數(shù)據(jù)通訊時,會刪除其對應表,造成鏈路中斷。(關于NAT的作用及其原理可以查看我的另一篇博文:關于使用UDP(TCP)跨局域網(wǎng),NAT穿透的心得)Push在Android平臺上長連接的實現(xiàn): 既然我們知道我們移動端要和Internet進行通信,必須通過運營商的網(wǎng)關,所以,為了不讓NAT映射表失效,我們需要定時向Internet發(fā)送數(shù)據(jù),因為只是為了不然NAT映射表失效,所以只需發(fā)送長度為0的數(shù)據(jù)即可。這時候就要用到定時器,在android系統(tǒng)上,定時器通常有一下兩種: 1.java.util.Timer 2.android.app.AlarmManager分析: Timer:可以按照計劃或者時間周期來執(zhí)行相關的任務。但是Timer需要用WakeLock來讓CPU保持喚醒狀態(tài),才能保證任務的執(zhí)行,這樣子會消耗大量流量;當CPU處于休眠的時候,就不能喚醒執(zhí)行任務,所以應用于移動端明顯是不合適。AlarmManager:AlarmManager類是屬于android系統(tǒng)封裝好來管理RTC模塊的管理類。這里就涉及到RTC模塊,要更好地了解兩者的區(qū)別,就要明白兩者真正的區(qū)別。 RTC(Real- Time Clock)實時鬧鐘在一個嵌入式系統(tǒng)中,通常采用RTC 來提供可靠的系統(tǒng)時間,包括時分秒和年月日等;而且要求在系統(tǒng)處于關機狀態(tài)下它也能夠正常工作(通常采用后備電池供電),它的外圍也不需要太多的輔助電路,典型的就是只需要一個高精度的32.768KHz 晶體和電阻電容等。(如果對這方面感興趣,可以自己查閱相關資料,這里就說個大概) 好了,回來正題。所以,AlarmManager又稱全局定時鬧鐘。這意味著,當我用使用AlarmManager來定時執(zhí)行任務,CPU可以正常地休眠,只有在執(zhí)行任務是,才喚醒CPU,這個過程是很短時間的。 下面簡單來說明其使用: 1.類似于Timer功能: //獲得鬧鐘管理器 AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); //設置任務執(zhí)行計劃 am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000, sender);//從firstTime才開始執(zhí)行,每隔5秒再執(zhí)行2.實現(xiàn)全局定時功能: //獲得鬧鐘管理器 AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); //設置任務執(zhí)行計劃 am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 5*1000, sender);//從firstTime才開始執(zhí)行,每隔5秒再執(zhí)行總結:在android客戶端使用Push推送時,應該使用AlarmManager來實現(xiàn)心跳功能,使其真正實現(xiàn)長連接。

[img]

如何實現(xiàn)android和服務器長連接

這種功能實際上就是數(shù)據(jù)同步,同時要考慮手機本身、電量、網(wǎng)絡流量等等限制因素,所以通常在移動端上有一下兩個解決方案:

1.一種是定時去server查詢數(shù)據(jù),通常是使用HTTP協(xié)議來訪問web服務器,稱Polling(輪詢);

2.還有一種是移動端和服務器建立長連接,使用XMPP長連接,稱Push(推送)。

從耗費的電量、流量和數(shù)據(jù)延遲性各方面來說,Push有明顯的優(yōu)勢。但是使用Push的缺點是:

對于客戶端:實現(xiàn)和維護相對成本高,在移動無線網(wǎng)絡下維護長連接,相對有一些技術上的開發(fā)難度。

對于服務器:如何實現(xiàn)多核并發(fā),cpu作業(yè)調度,數(shù)量龐大的長連接并發(fā)維護等技術,仍存在開發(fā)難點。

在講述Push方案的原理前,先了解一下移動無線網(wǎng)絡的特點。

移動無線網(wǎng)絡的特點:

因為 IP v4 的 IP 量有限,運營商分配給手機終端的 IP 是運營商內網(wǎng)的 IP,手機要連接 Internet,就需要通過運營商的網(wǎng)關做一個網(wǎng)絡地址轉換(Network Address Translation,NAT)。簡單的說運營商的網(wǎng)關需要維護一個外網(wǎng) IP、端口到內網(wǎng) IP、端口的對應關系,以確保內網(wǎng)的手機可以跟 Internet 的服務器通訊

GGSN(Gateway GPRS

Support Node 網(wǎng)關GPRS支持結點)模塊就實現(xiàn)了NAT功能。

因為大部分移動無線網(wǎng)絡運營商都是為了減少網(wǎng)關的NAT映射表的負荷,所以如果發(fā)現(xiàn)鏈路中有一段時間沒有數(shù)據(jù)通訊時,會刪除其對應表,造成鏈路中斷。

Push在Android平臺上長連接的實現(xiàn):

既然自己知道自己移動端要和Internet進行通信,必須通過運營商的網(wǎng)關,所以,為了不讓NAT映射表失效,咋們需要定時向Internet發(fā)送數(shù)據(jù),因為只是為了不然NAT映射表失效,所以只需發(fā)送長度為0的數(shù)據(jù)即可。

這時候就要用到定時器,在android系統(tǒng)上,定時器通常有一下兩種:

1.java.util.Timer

2.android.app.AlarmManager

分析:

Timer:可以按照計劃或者時間周期來執(zhí)行相關的任務。但是Timer需要用WakeLock來讓CPU保持喚醒狀態(tài),才能保證任務的執(zhí)行,這樣子會消耗大量流量;當CPU處于休眠的時候,就不能喚醒執(zhí)行任務,所以應用于移動端明顯是不合適。

AlarmManager:AlarmManager類是屬于android系統(tǒng)封裝好來管理RTC模塊的管理類。這里就涉及到RTC模塊,要更好地了解兩者的區(qū)別,就要明白兩者真正的區(qū)別。

RTC(Real- Time Clock)實時鬧鐘在一個嵌入式系統(tǒng)中,通常采用RTC

來提供可靠的系統(tǒng)時間,包括時分秒和年月日等;而且要求在系統(tǒng)處于關機狀態(tài)下它也能夠正常工作(通常采用后備電池供電),它的外圍也不需要太多的輔助電路,典型的就是只需要一個高精度的32.768KHz

晶體和電阻電容等。(如果對這方面感興趣,可以自己查閱相關資料,這里就說個大概)

好了,回來正題。所以,AlarmManager又稱全局定時鬧鐘。這意味著,當自己用使用AlarmManager來定時執(zhí)行任務,CPU可以正常地休眠,只有在執(zhí)行任務是,才喚醒CPU,這個過程是很短時間的。

下面簡單來說明其使用:

1.類似于Timer功能:

//獲得鬧鐘管理器

AlarmManager

am = (AlarmManager)getSystemService(ALARM_SERVICE);

//設置任務執(zhí)行計劃

am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000,

sender);//從firstTime才開始執(zhí)行,每隔5秒再執(zhí)行

2.實現(xiàn)全局定時功能:

//獲得鬧鐘管理器

AlarmManager

am = (AlarmManager)getSystemService(ALARM_SERVICE);

//設置任務執(zhí)行計劃

am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,

5*1000, sender);//從firstTime才開始執(zhí)行,每隔5秒再執(zhí)行

總結:在android客戶端使用Push推送時,應該使用AlarmManager來實現(xiàn)心跳功能,使其真正實現(xiàn)長連接。


分享名稱:長連接android,長連接和短連接的區(qū)別
鏈接分享:http://weahome.cn/article/dsopeii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部