美章網(wǎng) 資料文庫 移動(dòng)平臺大數(shù)據(jù)分批加載研究范文

移動(dòng)平臺大數(shù)據(jù)分批加載研究范文

本站小編為你精心準(zhǔn)備了移動(dòng)平臺大數(shù)據(jù)分批加載研究參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。

移動(dòng)平臺大數(shù)據(jù)分批加載研究

《電腦編程技巧與維護(hù)雜志》2015年第六期

1涉及技術(shù)

(1)Handle-Message機(jī)制:即標(biāo)準(zhǔn)線程機(jī)制是采用創(chuàng)建線程方式處理異步問題,子線程與主線程通信采用消息機(jī)制實(shí)現(xiàn)。這種方式的優(yōu)點(diǎn)是結(jié)構(gòu)清晰、功能定義明確。在多線程合并操作對UI進(jìn)行更新時(shí)更容易。Handle-Message機(jī)制主要由Handler-Message和Thread組成。Handler-Message由消息類Message、消息處理類Handler、消息隊(duì)列類MessageQueue和隊(duì)列線環(huán)Looper4部分組成,主要進(jìn)行消息的發(fā)送和接收操作。其中消息類Message主要負(fù)責(zé)線程間通信的信息,如果處理完成后需要更新主線程界面,可以發(fā)送帶有結(jié)果數(shù)據(jù)的Message給主線程;Handler:消息處理類,負(fù)責(zé)管理Message的發(fā)送和處理。使用Handler類中的obtainMessage方法獲取子線程的Message,在sendMessage方法發(fā)送給UI線程進(jìn)入消息隊(duì)列MessageQueue。Message-Queue:消息隊(duì)列,按照先進(jìn)先出的執(zhí)行順序存放Message。Looper:線環(huán),負(fù)責(zé)管理消息隊(duì)列,功能是像流水線一樣從消息隊(duì)列中抽取消息,然后進(jìn)行執(zhí)行。Thread線程類,包含UI線程即主線程MainThread和WorkerThread子線程。其中WorkerThread主要負(fù)責(zé)處理耗時(shí)操作。主要過程如圖1所示[1]。(2)Listview控件:是在移動(dòng)平臺上界面布局的數(shù)據(jù)顯示容器[2]。ListView分批數(shù)據(jù)加載實(shí)現(xiàn)方法:調(diào)用ListView的se-tOnScrollListener方法對ListView滾動(dòng)事件進(jìn)行監(jiān)聽,主要監(jiān)聽onScrollStateChanged跟onScroll方法,其中onScrollState-Changed方法是ListView滾動(dòng)狀態(tài)變化執(zhí)行的,分別會(huì)在用戶開始拖動(dòng)、用戶拖動(dòng)結(jié)束、拖動(dòng)結(jié)束后由于慣性進(jìn)行滾動(dòng)這3種情況下調(diào)用,而onScroll方法是ListView每滾動(dòng)一條記錄就會(huì)執(zhí)行一次。在onScroll方法內(nèi)判斷數(shù)據(jù)是否已經(jīng)顯示到當(dāng)前結(jié)果集的最后一條記錄,若是就使用異步機(jī)制繼續(xù)到服務(wù)器加載列表數(shù)據(jù),并把獲得的數(shù)據(jù)加入結(jié)果集,最后在UI線程進(jìn)行更新。(3)基本適配器BaseAdapter:是Android應(yīng)用程序中常用到的基礎(chǔ)數(shù)據(jù)適配器[3],它的主要用途是將一組數(shù)據(jù)傳到像ListView、Spinner、Gallery及GridView等UI顯示組件。例如可以自定義的BaseAdapter展示ListView;可以動(dòng)態(tài)修改、刷新ListView內(nèi)容;可以實(shí)現(xiàn)ListView內(nèi)容的點(diǎn)擊和長按點(diǎn)擊事件;可以在getView方法中動(dòng)態(tài)增加新組件。BaseAdapter繼承接口類Adapter類,而Adapter、數(shù)據(jù)和ListView之間的關(guān)系如圖2所示[4]。(4)JSON解析:從數(shù)據(jù)庫中獲取數(shù)據(jù)主要采用Android的JSON進(jìn)行解析[4],包含的類有:JSONObject:是一個(gè)JSON對象,這是系統(tǒng)中有關(guān)JSON定義的基本單元。JSONArray:代表一組有序的數(shù)值。本模型主要采用JSON解析從服務(wù)器獲取的數(shù)據(jù)信息。

2具體方案

具體方案步驟如下:(1)用戶發(fā)出閱讀請求。(2)Android客戶端UI線程創(chuàng)建一個(gè)子線程(workerthread)。(3)由該子線程通過HttpClient向服務(wù)器發(fā)送獲取健康報(bào)數(shù)據(jù)的請求,而不使用主線程執(zhí)行操作,實(shí)現(xiàn)異步機(jī)制。(4)服務(wù)器接受到請求,調(diào)用service方法從數(shù)據(jù)庫獲取健康報(bào)數(shù)據(jù),再對獲取到的數(shù)據(jù)進(jìn)行迭代,逐一解析成JSON對象(JSONObject)加入到JSON數(shù)組(JSONArray),最后將JSON數(shù)組以字符串形式返回Android客戶端。(5)Android客戶端接受到返回的JSON數(shù)組,對數(shù)組進(jìn)行迭代,逐一解析成健康報(bào)對象,加入List集合。(6)對主線程進(jìn)行更新,主要通過handler對象的obtain-Message方法獲得一個(gè)消息Message,這個(gè)消息Message附帶的數(shù)據(jù)是解析后獲得List集合。再通過handler的sendMessage方法發(fā)送給UI線程。創(chuàng)建一個(gè)繼承BaseAdapter(基礎(chǔ)適配器)的HealthnewspaperAdapter類,將獲得子線程發(fā)來的健康報(bào)集合,綁定到HealthnewspaperAdapter對象中,最后顯示在ListView對象。(7)調(diào)用ListView的setOnScrollListener方法對ListView滾動(dòng)事件進(jìn)行監(jiān)聽。如果發(fā)生ListView每滾動(dòng)一條記錄就會(huì)執(zhí)行一次onScroll方法,判斷數(shù)據(jù)是否已經(jīng)顯示到當(dāng)前結(jié)果集的最后一條記錄,若是就使用異步機(jī)制繼續(xù)重復(fù)步驟(1)向服務(wù)器請求加載數(shù)據(jù),并把獲得的數(shù)據(jù)加入結(jié)果集,最后在UI線程進(jìn)行更新,從而實(shí)現(xiàn)分批加載。整個(gè)流程如圖3所示。

3方案實(shí)施結(jié)果

目前老人手機(jī)的日益普及,針對老人健康管理應(yīng)用設(shè)計(jì)也在日益完善。其中針對老人進(jìn)行定期進(jìn)行健康報(bào)傳送,讓老人能夠及時(shí)了解各種健康養(yǎng)生的辦法。健康報(bào)中數(shù)據(jù)量很多而且包含文字信息和圖片信息,其中健康報(bào)的列表就可以包含了上百條甚至上千條的內(nèi)容(例如一個(gè)月的內(nèi)容和一年的內(nèi)容)。所以在進(jìn)行數(shù)據(jù)傳送時(shí)采用異步機(jī)制的大數(shù)據(jù)分批傳送模式。開發(fā)環(huán)境包括:Android4.3版本,移動(dòng)端的Eclipse開發(fā)平臺,服務(wù)器端采用的MyEclipse開發(fā)平臺和oracle數(shù)據(jù)庫。其中移動(dòng)平臺為手機(jī)端,老年人通過手機(jī)進(jìn)行閱讀手機(jī)報(bào),而服務(wù)器端主要提供網(wǎng)頁Web瀏覽和后臺數(shù)據(jù)庫的管理,手機(jī)報(bào)的更新通過服務(wù)器端進(jìn)行管理并實(shí)現(xiàn)網(wǎng)絡(luò)訪問瀏覽。手機(jī)健康報(bào)數(shù)據(jù)均保存在后臺數(shù)據(jù)庫中。健康報(bào)數(shù)據(jù)傳輸具體的順序圖如圖4所示。其過程即為描述的具體方案步驟,其中UIthread即為主線程,workerthread為子線程。這兩線程為Android端操作步驟。而Webaction和WebserviceWebDao為服務(wù)器端,作為對手機(jī)端的通信橋梁和數(shù)據(jù)庫的通信橋梁。一般老人手機(jī)屏幕一頁因?yàn)樽煮w較大所以一般為6-7條記錄,而如果超過6-7條記錄時(shí),沒必要全部進(jìn)行傳輸顯示,可以采用傳輸模式進(jìn)行數(shù)據(jù)分批顯示,如圖5(a)所示,這樣確保頁面上的6-7條記錄能夠傳輸保存在手機(jī)內(nèi)存中。而所加載的列表信息內(nèi)容包含文字和圖片,顯示內(nèi)容如圖5(b)所示。采用服務(wù)器端對后臺數(shù)據(jù)庫中健康報(bào)信息進(jìn)行更新,如圖6所示。

4結(jié)語

主要對移動(dòng)平臺下大數(shù)據(jù)傳輸進(jìn)行優(yōu)化,主要采用Han-dle-Message異步機(jī)制的方式結(jié)合BaseAdapter、ListView控件對大數(shù)據(jù)分批加載,數(shù)據(jù)傳輸終端采用JSON技術(shù)對傳輸數(shù)據(jù)進(jìn)行解析。設(shè)計(jì)一個(gè)老人健康管理平臺,包含移動(dòng)平臺和Web服務(wù)器平臺兩部分,其中關(guān)于健康報(bào)的傳輸采用了傳輸方案通過分析和實(shí)現(xiàn),通過運(yùn)行,系統(tǒng)數(shù)據(jù)加載流程,健康報(bào)的圖文和文字信息加載正常而且流暢,手機(jī)端無卡殼死機(jī)現(xiàn)象出現(xiàn),結(jié)果良好。后期對數(shù)據(jù)加載中涉及的緩存做進(jìn)一步的優(yōu)化。

作者:許雪林陳敏陳建峰單位:福建工程學(xué)院信息科學(xué)與工程學(xué)院

主站蜘蛛池模板: 日本高清免费一本视频在线观看| 向日葵app在线观看下载视频免费 向日葵app在线观看免费下载视频 | 色伦专区97中文字幕| 天天综合天天添夜夜添狠狠添| 亚洲免费在线视频| 8x成人永久免费视频| 日本漫画全彩口工漫画绅士| 人妻人人澡人人添人人爽| 精品小视频在线| 少妇被又大又粗又爽毛片| 亚洲av永久无码精品水牛影视| 美女脱了内裤打开腿让你桶爽 | 久久国产精品免费视频| 男女一边摸一边脱视频网站| 国产日韩一区二区三区在线观看 | 国产xxxxx在线观看| 97久久精品午夜一区二区| 日本成人免费网站| 亚洲人成在线影院| 精品久久久久成人码免费动漫| 国产欧美视频在线观看 | 熟妇激情内射com| 国产亚洲精品精品国产亚洲综合| 99ri在线观看| 日本a∨在线播放高清| 亚洲日本人成中文字幕| 精品综合久久久久久99| 国产欧美日韩精品丝袜高跟鞋| 97天天摸天天碰天天爽| 成年人的免费视频| 亚洲一区二区三区不卡在线播放| 精品69久久久久久99| 国产夫妻在线观看| 999无色码中文字幕| 妇女性内射冈站HDWWWCOM| 久久精品亚洲日本佐佐木明希| 花季传媒app下载免费观看大全 | 国内xxxx乱子另类| 丰满人妻一区二区三区视频| 欧美性大战久久久久xxx| 公交车老师屁股迎合我摩擦|