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