999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Android平臺下快速加載圖文信息的研究與實現①

2016-02-20 06:52:26魏振鋼
計算機系統應用 2016年12期
關鍵詞:數據庫信息

王 結, 魏振鋼

(中國海洋大學 信息科學與工程學院學院, 青島 266100)

Android平臺下快速加載圖文信息的研究與實現①

王 結, 魏振鋼

(中國海洋大學 信息科學與工程學院學院, 青島 266100)

為了加快Android移動端圖文信息的加載速度, 方便用戶快速瀏覽界面獲取相關信息, 在汲取前人的相關技術基礎上, 結合了Android圖像開源視圖smart-Image-View、網絡請求框架android-async-http以及分頁顯示技術. 采用大量圖文數據做實驗, 結果表明三種方法的結合使用明顯提高了圖文加載速度.

圖文信息; 加載速度; 圖像開源視圖; 網絡請求框架; 分頁顯示

1 引言

隨著Android平臺的應用不斷涌現, 為了提高App內容的簡潔直觀性, 開發者偏向以圖文信息的形式來布局界面內容. 例如目前廣泛受到用戶關注的購物App, QQ、微信等聊天軟件以及各種題庫軟件等都少不了圖文內容的展示. 然而由于數據庫內容的不斷增多,在Android端前臺界面要顯示的圖文信息也愈發增多.因此, 尋求新的技術方法來加快圖文信息的加載速度,增強用戶體驗性是非常有必要的.

2 Android圖像開源視圖

Android平臺的應用開發主要采用MVC框架[1],通過控制層、模型層以及視圖層之間的通信, 完成對圖文信息的加載, 具體過程是Android端前臺的Activity將用戶的請求信息交于模型業務邏輯層(即后臺相關的Servlet)處理, 之后Servlet從服務器中獲取相關的圖文信息以Json數據包[2]形式返回給前臺, 再由前臺視圖層(即相應的XML)處理顯示. 具體的通信過程如圖1所示.

而圖片在服務器中的存儲格式一般是字符串形式的URL, 當前臺從Json數據包中解析出各種數據后,文字可以立即顯示出來, 但由于獲取到的圖片是其URL形式存儲的, 需通過URL再次訪問后臺來獲取圖片資源. 這樣不僅使得代碼量繁雜同時也大大降低了圖片的加載速度.

為了解決圖片和文字加載速度的不同步問題, 查閱了相關的文獻期刊, 先后有AsyncHttpClient框架[3]、用于獲取網絡圖片的Universal-Image-Loader框架以及Volley網絡通信框架被推出應用到網絡圖片加載中,表1所示為這三種網絡通信框架[4]的特點比較.

圖1 Android端MVC通信過程

表1 三種網絡通信框架的特點比較

通過分析比較可以看出這三種網絡框架都有各自的優缺點, 應用的比較好的是Volley框架, 可以實現多線程請求, 穩定性及高, 同時還提供緩存功能. 但在只加載圖文信息的具體項目中, 若采用這種框架實現, 空間占用太大, 且代碼存在冗余, 反而使得程序更加復雜化. 而本文采用的框架是集多線程、緩存機制、代碼量少于一體的Android圖像視圖控件smart-Image-View[5].

smart-Image-View可以實現各種來源的圖片資源獲取. 根據來源的不同, smart-Image-View定義了一個公共接口SmartImage, 用不同的類分別來實現該接口下的一個getBitmap函數. 如圖2所示是smart-Image-View的基本框架.

圖2 smart-Image-View基本框架

將smart-Image-View控件取代ImageView應用到圖片加載中, 只需調用自定義控件SmartImageView的setImageUrl方法, 即可從指定的URL路徑中讀取圖片資源并部署在該控件上.

同時, smart-Image-View通過WebImage類下的WebImage Cache實現了圖片的緩存. WebImage類根據URL獲取資源時, 并不是每次都要從網絡上加載, 而是實現了二級緩存, 即內存緩存和磁盤緩存. 每次加載時, 先要判斷該URL對應的圖片是否已存在于緩存中, 若有, 直接從緩存中獲取, 反之, 再從URL上加載. smart-Image-View在圖文內容加載上的應用使得圖片資源和文字實現了幾乎同步顯示的效果, 并且節約了用戶的下載流量和載入時間.

3 Android網絡請求框架

Http網絡數據交互請求是Android端應用程序開發關鍵部分之一, 網絡請求方式的效率和性能直接影響到App的整體用戶體驗流暢性. 以往Android端的網絡請求處理一般使用Apache HTTP Client或者HttpURLConnect這兩個類庫, 同時需要編寫大量的get和post方法完成請求, 并且網絡請求都會占用UI線程, 使得其他操作無法進行, 遇到網絡異常情況還會出現程序無響應現象. 對于這些問題, 開發者們提出過很多的優化方案, 譚東等人在《Android網絡負載請求優化方案設計》[6]一文中提出了幾個網絡優化方法, 創建網絡請求線程管理池, 使用優先級請求排序策略以及網絡請求及時回收等, 都能很好地達到優化效果. 而本文提出的android-async-http[7]開源框架則是集成了這些優化思想, 實現了一個異步網絡請求處理庫, 獨立在UI主線程之外, 通過線程池的網絡請求回調方法處理請求結果.

將android-async-http應用到圖文信息加載上的優勢有幾點: 第一, 移動端應用要考慮到網絡移動連接的不穩定性, App在加載圖文信息的過程中網絡一旦斷開, 信息將無法顯示出來, 而android-async-http框架實現了網絡的自動智能請求重試, 在請求失敗的情況下可以設置多次請求; 第二, App端向服務器請求獲取相關圖文信息時, 利用后臺Servlet將數據打包成Json格式返回給前臺后, 一般都需要進行相當費時的一系列格式轉換處理才能顯示給用戶瀏覽. 而android-async-http框架內置了一個JsonHttpResponseHandler解析類, 可以實現自動化高效地Json格式數據解析, 大大縮短了圖文數據從返回前臺到顯示于界面這一時間過程. 第三, android-async-http框架具有持久化cookie存儲的特點,在請求服務器時能夠將訪問到的cookie信息方便的存儲起來.

4 分頁顯示

隨著數據庫技術在網絡領域的廣泛應用, Android端與數據庫交互信息的顯示方式也在不斷地創新和改進. 傳統的方法是Android端一次性向后臺Servlet請求所有相關圖文信息, Servlet得到命令后從數據庫中獲取所有符合條件的圖文信息并打包成Json數據發送給前臺. 這種方法顯然在數據信息較大的情況下使用會明顯降低加載速度; 之后有了分頁處理[8]的思想,即利用結果集處理. 通過首次執行SQL語句, 將查詢結果存于結果集對象中, 之后前臺的每次請求數據,實際上是在結果集中獲取指定行位置的數據, 這一過程雖然減少了對數據庫SQL語句的查詢, 但數據庫仍要一直保持連接狀態, 使得占用的數據庫訪問資源比較多, 而利用率不高. 而針對Android端請求的圖文信息量大的情況, 本文提出了分頁顯示技術, 即利用SQL語句處理, 在前臺界面加載時, 只向后臺數據庫請求固定行數的圖文信息, 存于結果集, 并顯示在列表視圖中, 等到需要查看更多時, 再向數據庫請求加載. 這樣雖然對數據庫進行SQL語句查詢操作變得頻繁, 但數據庫的訪問資源使用完畢之后就立即被釋放.

首先在Android端和后臺模型層分別創建一個用于傳遞分頁信息的數據包PageBean類, 該類包含了分頁的具體信息(如數據總行數, Android端當前顯示頁號, 總顯示頁數, 每頁顯示行數)和分頁數據(每頁中顯示的List數據集), 前臺向后臺模型層傳遞每頁顯示的行數和當前顯示頁號, 后臺相應Servlet通過doPost方法接收前臺傳遞來的數據參數后, 調用實現DAO接口的具體類的方法訪問數據庫, 獲取相關信息打包存于PageBean類的對象中, 以Json包的形式返回給前臺.該過程的具體實現如圖3所示.

圖3 Android端分頁顯示具體實現過程

該過程中使用了數據訪問模型[9,10](Data Access Object), 它是處于業務邏輯層與數據源之間的一種抽象數據源, 通過DAO層的抽象, 將具體的業務邏輯層和數據源區分開, 其實質是向外部提供了一個訪問數據源的統一接口, 對外隱藏操作數據源的實現細節,從而提高軟件的可維護性.

5 具體實現

在前臺界面XML文件中引用了smart-Image-View圖像開源視圖作為圖片的顯示容器. 實驗結果顯示前臺讀取商品信息時, 文字和圖片幾乎是同時加載出來的, 說明圖片的加載速度有了明顯的提高. 圖4和圖5所示為用ImageView視圖容器和smart-Image-View視圖容器加載圖片的效果顯示. 從中可以明顯看出使用smart-Image-View的優勢.

而在App端應用android-async-http網絡請求框架也是比較簡便的, 首先需要將該框架的jar包添加到Android應用程序libs文件中, 再創建一個AsyncHttpClient對象, 并通過RequestParams對象設置請求參數, 然后調用Async -HttpClient的某個get或post方法, 傳遞你需要的callback接口實現AsyncHttpResponseHandler. 實現代碼如圖6所示.

圖4 ImageView視圖 容器加載的效果

圖5 smart-Image-View 視圖容器加載的效果

圖6 android-async-http框架的具體代碼實現

代碼中HttpUtil是一個自定義的網絡請求工具類,它將AsyncHttpClient對象和各種含不同參數的get和post方法封裝在一起. 這樣實現的優點是可以避免網絡請求處理時AsyncHttpClient對象的反復創建.

Web端的分頁處理技術應用到Android移動端上,首先要對前臺用于顯示圖文信息的ListView或GridView設置滾動監聽事件, 當用戶滑動到已加載的最后一條信息時, 將當前顯示頁號和每頁顯示總行數傳遞到后臺Servlet, 通過DAO方法訪問數據庫加載指定數量的圖文內容. 監聽滾動事件的核心代碼如圖7所示.

圖7 前臺ListView或GridView的滾動事件的監聽

而訪問數據庫加載更多圖文信息是通過SQL語句查詢來實現的, 由于實現的效果是分頁顯示, SQL語句在書寫時, 要傳入當前行號和指定獲取的行數等參數, 具體代碼如圖8所示.

圖8 后臺SQL語句查詢實現的PageBean數據獲取代碼

6 結語

為了提高Android端圖文信息的加載速度, 本文是從三個方面考慮的: 一是從信息本身特點出發; 二是從網絡請求處理方式上考慮; 三是從數據庫訪問方式上出發. Android開源圖像視圖smart-Image-View和開源框架android-async-http的設計是廣大Android編程愛好者不斷修改創新的成果, 而分頁顯示技術則是在借鑒Web端分頁處理數據的基礎上應用到Android移動端的. 這三種方法結合使用到加載圖文信息上可以為其他App端項目開發提供參考價值.

1 任中方,張華,閆明松,陳世福.MVC模式研究的綜述.計算機應用研究,2004,21(10):1–4,8

2 高靜,段會川.JSON數據傳輸效率研究.計算機工程與設計, 2011,32(7):2267–2270.

3 Zhao Z, Song JD, Haihong E. Research and design for mobile application development on Android platform. The Journal of New Industrialization, 2013, 3(6): 78–89.

4 孟遠.Android網絡通信框架Volley的解析和比較.軟件,2014,(12):66–68.

5 Smith J. Android Smart Image View. http://loopj.com/ android- smart-image-view/.

6 譚東,楊德剛.Android網絡負載請求優化方案設計.中國新通信,2015,(2):107–108.

7 Smith J. Android Asynchronous HttpClient. http://loopj.com/ android-async-http/.

8 盧成均. ASP.NET中數據列表分頁方法研究.計算機系統應用,2006,15(11):83–86.

9 王正玉,李斌.基于DAO模式的Hibernate框架在Java Web開發中的應用.微型機與應用,2015,(11):14–17.

10 歐陽宏基,解爭龍,黃素萍,丁要軍.一種基于DAO設計模式與Hibernate框架的數據持久化層模型.微計算機應用,2009,30(3):36–40.

Research and Implementation of Rapid Loading Picture and Text Information Based on Android

WANG Jie, WEI Zhen-Gang
(College of Information Science and Engineering, Ocean University of China, Qingdao 266100, China)

This paper proposes the issue that we should speed up the loading rate of image and text information on the Android mobile terminal, and meanwhile make users convenient to fast access to relevant information by browsing interface. On the basis of the relevant technology, this paper combines the Android image open source view with smart-Image-View, Network request framework, android-async-http and paging display technology. After using a large number of textual and graphic data to do the experiment, the result shows that the combination use of the three methods made it success to improve the loading rate of image and text information.

image and text information; loading rate; image open source view; network request framework; paging display

2016-03-18;收到修改稿時間:2016-04-24

10.15888/j.cnki.csa.005466

猜你喜歡
數據庫信息
數據庫
財經(2017年15期)2017-07-03 22:40:49
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
數據庫
財經(2010年20期)2010-10-19 01:48:32
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 亚洲欧美日韩成人高清在线一区| 亚洲欧洲日韩综合| 久久久久久久97| 亚洲啪啪网| 久久夜色撩人精品国产| 91色老久久精品偷偷蜜臀| 无码日韩视频| 国产成人午夜福利免费无码r| 欧美色视频在线| 亚洲码在线中文在线观看| 91免费观看视频| 欧美特黄一级大黄录像| 亚洲综合色吧| 欧美精品v| 91视频免费观看网站| 狼友视频一区二区三区| 国产成人1024精品下载| 精品无码视频在线观看| 欧美不卡视频在线观看| 国产草草影院18成年视频| 成人一区专区在线观看| 久久国产精品嫖妓| 中文纯内无码H| 国产aaaaa一级毛片| 超碰aⅴ人人做人人爽欧美| 国产理论精品| 熟妇丰满人妻| 91亚洲影院| 国产91麻豆免费观看| 亚洲制服中文字幕一区二区| 精品久久久久久中文字幕女| 伊人久久精品亚洲午夜| 影音先锋亚洲无码| 国产成人亚洲精品色欲AV| 国产精品久久国产精麻豆99网站| 久久精品丝袜| 亚洲第一黄片大全| 亚洲成年网站在线观看| 91国内在线视频| 国产免费怡红院视频| 91 九色视频丝袜| 小说区 亚洲 自拍 另类| 91无码人妻精品一区二区蜜桃| 国产成人亚洲毛片| 99久久精品免费看国产电影| 国产精品密蕾丝视频| 中文字幕在线观看日本| 国产欧美精品专区一区二区| 欧美无遮挡国产欧美另类| 欧美久久网| 国产精品天干天干在线观看| 中文字幕丝袜一区二区| 国产爽爽视频| 国产最新无码专区在线| 亚洲另类色| 亚洲国产成人精品无码区性色| 国产一区二区影院| 高清国产va日韩亚洲免费午夜电影| 国产不卡国语在线| 丁香婷婷激情综合激情| 欧美www在线观看| 亚洲丝袜中文字幕| 嫩草国产在线| 91久久夜色精品国产网站| aaa国产一级毛片| 97国产精品视频人人做人人爱| 免费在线国产一区二区三区精品| 国内精品自在欧美一区| 一级福利视频| 国产在线一二三区| A级毛片高清免费视频就| 欧美不卡视频在线观看| 99久久精品免费看国产电影| 久久人妻xunleige无码| 福利视频久久| 欧美成在线视频| 97在线视频免费观看| 色综合综合网| 亚洲 欧美 中文 AⅤ在线视频| 人妻精品久久久无码区色视| 国产成人精品在线1区| 国产 日韩 欧美 第二页|