android下載軟件app 如何實(shí)現(xiàn)android客戶端與服務(wù)端數(shù)據(jù)同步?
如何實(shí)現(xiàn)android客戶端與服務(wù)端數(shù)據(jù)同步?這個(gè)問題分為兩部分:一是客戶端數(shù)據(jù)發(fā)生變化時(shí)會(huì)上傳,這很簡(jiǎn)單;二是服務(wù)器端在數(shù)據(jù)發(fā)生變化時(shí)能夠知道并從服務(wù)器端拉取數(shù)據(jù)。這個(gè)問題有幾種解決方案:方法1:定
如何實(shí)現(xiàn)android客戶端與服務(wù)端數(shù)據(jù)同步?
這個(gè)問題分為兩部分:一是客戶端數(shù)據(jù)發(fā)生變化時(shí)會(huì)上傳,這很簡(jiǎn)單;二是服務(wù)器端在數(shù)據(jù)發(fā)生變化時(shí)能夠知道并從服務(wù)器端拉取數(shù)據(jù)。這個(gè)問題有幾種解決方案:
方法1:
定期從服務(wù)器輪詢和上載,但缺點(diǎn)是它不實(shí)時(shí)和優(yōu)雅。
方法2:服務(wù)器發(fā)送一條短消息,告訴客戶端數(shù)據(jù)發(fā)生了變化,然后客戶端將其拉入。缺點(diǎn)是成本很高,而且當(dāng)客戶在國(guó)外時(shí),它似乎不是實(shí)時(shí)的。
方法三:服務(wù)器和客戶端建立套接字并保持心跳,優(yōu)點(diǎn)是實(shí)時(shí)性,缺點(diǎn)是功耗。
方法4:使用谷歌的C2DM推送服務(wù),這是方法3的升級(jí)版本。這很好,但缺點(diǎn)是每部手機(jī)都需要一個(gè)谷歌賬戶才能使用這項(xiàng)服務(wù)。
如何搭建一個(gè)與Android客戶端交互的服務(wù)器?
Android客戶端和服務(wù)器基于intentservice,詳細(xì)信息如下:
后臺(tái)使用簡(jiǎn)單的servlet,支持get或post。servlet最終將一個(gè)字符串標(biāo)志返回到前臺(tái),值為true或false,指示登錄是否成功。
然后在Android ADT上創(chuàng)建一個(gè)Android項(xiàng)目,分別創(chuàng)建登錄界面和登錄成功界面兩個(gè)活動(dòng)。
HTTP訪問公共類,用于處理get和post請(qǐng)求。
intentservice服務(wù)用于以隊(duì)列的形式在后臺(tái)處理耗時(shí)的操作。
英寸AndroidManifest.xml文件在中注冊(cè)intentservice。注意使用權(quán)限節(jié)點(diǎn)使程序能夠訪問網(wǎng)絡(luò)。
登錄界面處理,注意按鈕監(jiān)控事件,使用意圖將值傳遞給服務(wù)。在receiving broadcast類中,還使用intent將值傳遞給下一個(gè)活動(dòng)。在oncreate()中,動(dòng)態(tài)注冊(cè)接收廣播類的實(shí)例receiver。在receiving broadcast類中,不要忘記在使用接收器后注銷它,否則您將報(bào)告一個(gè)異常:are you missing a call to unregisterereceiver()。