Android方案設計論文
一、Android網(wǎng)絡(luò )負載請求優(yōu)化方案
1.1Android網(wǎng)絡(luò )優(yōu)化分析
一般造成APP卡頓不流暢,數據請求緩慢的網(wǎng)絡(luò )相關(guān)原因有:多網(wǎng)絡(luò )請求同時(shí)異步并發(fā);網(wǎng)絡(luò )請求的生命周期沒(méi)有和Activity和生命周期的聯(lián)動(dòng),Activity關(guān)閉后也可能某個(gè)網(wǎng)絡(luò )請求還在后臺進(jìn)行;網(wǎng)絡(luò )請求的優(yōu)先級處理不合理;重復網(wǎng)絡(luò )請求;網(wǎng)絡(luò )數據接口設計不合理;沒(méi)有設置網(wǎng)絡(luò )數據緩存;網(wǎng)絡(luò )請求的圖片沒(méi)有做緩存處理;創(chuàng )建過(guò)多的不必要對象,造成頻繁GC等。
1.2APP架構設計
采用MVC設計模式,邏輯業(yè)務(wù),數據和視圖層分離。這樣在后期改進(jìn)和個(gè)性化定制時(shí)不需要重新編寫(xiě)業(yè)務(wù)邏輯。網(wǎng)絡(luò )請求框架采用谷歌自己的框架Volley。Volley是FicusKirpatrick在GooogleI/O2013發(fā)布的一個(gè)處理和緩存網(wǎng)絡(luò )請求的庫,能使網(wǎng)絡(luò )通信更快,更簡(jiǎn)單,更健壯。Volley提供JSON,圖像等的異步下載;網(wǎng)絡(luò )請求的排序(scheduling);網(wǎng)絡(luò )請求的優(yōu)先級處理;緩存,多級別取消請求,和Activity和生命周期的聯(lián)動(dòng)(Activity結束時(shí)同時(shí)取消所有網(wǎng)絡(luò )請求)。
1.3Android優(yōu)化方案設計
目前Android平臺的應用越來(lái)越多,基于A(yíng)ndroid平臺的開(kāi)發(fā)者也越來(lái)越多。對于手機平臺來(lái)說(shuō),如何在這么小的平臺上流暢的運行一個(gè)程序變得越來(lái)越重要。其中網(wǎng)絡(luò )負載請求這塊是APP性能優(yōu)化的一個(gè)重要的部分。高性能的APP一般網(wǎng)絡(luò )數據請求效率也都非常的高,體驗自然會(huì )得到提升。本文從Android平臺移動(dòng)APP的網(wǎng)絡(luò )負載請求優(yōu)化入手,分析和設計一個(gè)基于A(yíng)PP網(wǎng)絡(luò )數據請求模塊的架構和優(yōu)化設計方案。在A(yíng)PP的程序中Application里創(chuàng )建一個(gè)全局網(wǎng)絡(luò )負載請求線(xiàn)程池,用于管理整個(gè)APP的網(wǎng)絡(luò )請求,并進(jìn)行優(yōu)先級排序處理。單例模式,保證APP全局只有一個(gè)網(wǎng)絡(luò )請求實(shí)例,避免創(chuàng )建過(guò)多對象,無(wú)法管理,耗費系統資源。網(wǎng)絡(luò )線(xiàn)程池開(kāi)辟一塊內存空間,里面存放了眾多(未死亡)的線(xiàn)程,池中線(xiàn)程執行調度由池管理器來(lái)處理。當有線(xiàn)程任務(wù)時(shí),從池中取一個(gè),執行完成后線(xiàn)程對象歸池,這樣可以避免反復創(chuàng )建線(xiàn)程對象所帶來(lái)的性能開(kāi)銷(xiāo),節省了系統的資源。優(yōu)先級請求排序策略。設置線(xiàn)程池的核心線(xiàn)程數和最大線(xiàn)程數。所有BlockingQueue都可用于傳輸和保持提交的任務(wù)?梢允褂么岁犃信c池大小進(jìn)行交互:如果運行的線(xiàn)程少于corePoolSize,則Executor始終首選添加新的線(xiàn)程,而不進(jìn)行排隊;如果運行的線(xiàn)程等于或多于corePoolSize,則Executor始終首選將請求加入隊列,而不添加新的線(xiàn)程;如果無(wú)法將請求加入隊列,則創(chuàng )建新的線(xiàn)程,除非創(chuàng )建此線(xiàn)程超出maximumPoolSize,在這種情況下,任務(wù)將被拒絕。網(wǎng)絡(luò )請求及時(shí)回收,與Activity同生命周期控制。在A(yíng)PP的全局Application里暴露一個(gè)添加和關(guān)閉回收網(wǎng)絡(luò )請求的List,用來(lái)及時(shí)的維護和銷(xiāo)毀網(wǎng)絡(luò )負載請求。這樣如果一個(gè)Activity停止的時(shí)候,同時(shí)取消所有或部分未完成的網(wǎng)絡(luò )請求。這樣就做到了多級別取消請求和Activity和生命周期的聯(lián)動(dòng)。合理的數據庫接口對接設計。在不影響數據庫請求效率和負載的前提下,用盡可能的少的接口去為APP提供數據。例如一個(gè)APP的界面Activity,盡量用最少的請求獲取網(wǎng)絡(luò )數據。這樣少量的網(wǎng)絡(luò )請求會(huì )提升APP穩定性和流暢性。設置網(wǎng)絡(luò )超時(shí)時(shí)間和網(wǎng)絡(luò )請求緩存。對于網(wǎng)絡(luò )請求如果不設置合理的超時(shí)時(shí)間,會(huì )導致某個(gè)請求在服務(wù)器沒(méi)有返回數據的情況下,不停地一直在后臺運行,耗費內存,所以設置超時(shí)時(shí)間會(huì )避免這一問(wèn)題的出現。同時(shí)可以根據需要適當設置下網(wǎng)絡(luò )請求緩存,當重復請求某個(gè)接口時(shí)在規定的緩存有效時(shí)間內,讀取網(wǎng)絡(luò )緩存,可以減少耗費流量和優(yōu)化速度。設立數據庫緩存機制?梢允褂脙戎肧Qlite進(jìn)行相應的網(wǎng)絡(luò )返回的數據進(jìn)行緩存。優(yōu)先存儲一些固定的信息到數據庫,例如用戶(hù)的永遠不會(huì )變得信息,如id,性別,出生日期類(lèi)似的;\統的說(shuō),不變文件的緩存時(shí)間是永久,變化文件的緩存時(shí)間是最大忍受不變時(shí)間。采用緩存,可以進(jìn)一步大大緩解數據交互的壓力,又能提供一定的離線(xiàn)瀏覽。當然緩存的數據需要更新的也要及時(shí)更新緩存。設置圖片緩存,并且針對列表ListView或GridView等進(jìn)行優(yōu)化。圖片處理加載在A(yíng)ndroid開(kāi)發(fā)中經(jīng)常會(huì )用到,圖片加載是一個(gè)非常耗費內存的,過(guò)大和過(guò)多就會(huì )造成內存溢出。簡(jiǎn)單的緩存邏輯就是緩存網(wǎng)絡(luò )圖片到本地文件夾,下次重復加載時(shí)判斷本地緩存是否有,有的話(huà)讀取本地緩存,沒(méi)有就重新獲取,加載網(wǎng)絡(luò )圖片也是異步處理。圖片處理要考慮多線(xiàn)程,緩存,內存溢出等很多方面。對于一些縮略圖和原圖顯示要處理得當,縮略圖顯示的地方要講圖片壓縮處理合適尺寸。像ListView和GridView這種列表在滾動(dòng)和停止時(shí)要對圖片加載進(jìn)行處理,滾動(dòng)時(shí)停止圖片加載工作,停止滾動(dòng)列表后再進(jìn)行加載圖片數據。這樣可以避免滑動(dòng)中列表卡頓和內存溢出情況。
二、總結
對于A(yíng)PP性能方面的優(yōu)化有很多方面,其中網(wǎng)絡(luò )方面是一個(gè)重要的方向,大部分的APP的數據都是要和網(wǎng)絡(luò )打交道,所以很好的使用網(wǎng)絡(luò )請求、根據不同的情況和需求進(jìn)行變更算法和優(yōu)化策略尤為重要。良好的優(yōu)化網(wǎng)絡(luò )策略會(huì )讓APP變得更加的快速,體驗更加的優(yōu)秀。
【Android方案設計論文】相關(guān)文章:
微波傳輸系統方案設計論文02-13
機載測試系統供電方案設計論文02-13
直升機高層救援方案設計論文02-13
高速公路改擴建方案設計論文12-05
網(wǎng)絡(luò )平臺的發(fā)展前景及方案設計論文02-13
集約化小學(xué)校園的方案設計論文02-13
動(dòng)車(chē)組轉向架生產(chǎn)組織方案設計論文02-13
智能化水族箱系統的集成方案設計論文02-13
基于H.323協(xié)議的音頻混合方案設計的論文02-14
移動(dòng)互聯(lián)網(wǎng)應用與開(kāi)發(fā)人才培養方案設計與研究論文02-13
- 相關(guān)推薦