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
主站蜘蛛池模板: 中文字幕有乳无码| 亚洲欧美日韩视频一区| 亚洲视频a| 国产高潮视频在线观看| 国产成人av一区二区三区| 国产69囗曝护士吞精在线视频| 久久毛片基地| 国产在线精品人成导航| 91午夜福利在线观看精品| 亚洲视频黄| 亚洲一级毛片免费观看| 亚洲天堂高清| 婷婷亚洲最大| 亚洲一区网站| 亚洲国产成人麻豆精品| 日本一区二区不卡视频| 久久 午夜福利 张柏芝| 亚洲成人黄色网址| 免费人成视频在线观看网站| 日韩中文精品亚洲第三区| 大陆精大陆国产国语精品1024| 99精品国产自在现线观看| 99免费在线观看视频| 久久99国产视频| 久久永久精品免费视频| 在线观看亚洲天堂| 啊嗯不日本网站| 国产精品成人免费综合| 综合久久五月天| 91色在线观看| 日本国产在线| 久久综合一个色综合网| 精品视频第一页| 国产女主播一区| www.国产福利| 免费欧美一级| 成人国产精品一级毛片天堂 | 真实国产乱子伦高清| 中文字幕调教一区二区视频| 国产成人亚洲综合A∨在线播放| 青草视频在线观看国产| 韩日午夜在线资源一区二区| 欧美a网站| 国产日韩av在线播放| 香蕉网久久| 亚洲成人一区二区三区| 亚洲一区二区三区香蕉| 亚洲日韩高清无码| 天天色天天综合网| 亚洲成肉网| 亚洲成人福利网站| 国产国产人成免费视频77777| 日本欧美精品| 国产香蕉97碰碰视频VA碰碰看 | 国产麻豆va精品视频| 天天综合网色| 一区二区影院| 黑色丝袜高跟国产在线91| 亚洲最大福利视频网| 国产极品美女在线观看| 激情网址在线观看| 国产成人精品视频一区视频二区| 日韩精品成人在线| 欧美在线三级| 欧美色伊人| 国产激情无码一区二区免费| 欧美成人怡春院在线激情| 久久久精品无码一区二区三区| 久久婷婷综合色一区二区| 91久久国产综合精品| 国产真实乱子伦视频播放| 青青青亚洲精品国产| 福利片91| 亚洲美女一级毛片| 人人爽人人爽人人片| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲大尺度在线| 国产精品自在在线午夜区app| 久久 午夜福利 张柏芝| 色成人综合| 亚洲无码高清免费视频亚洲| 精品1区2区3区|