国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android網(wǎng)絡(luò)負(fù)載請求優(yōu)化方案設(shè)計(jì)

2015-05-30 22:04:35譚東楊德剛
中國新通信 2015年2期
關(guān)鍵詞:網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)優(yōu)化網(wǎng)絡(luò)

譚東 楊德剛

【摘要】 目前Android平臺的應(yīng)用越來越多,基于Android平臺的開發(fā)者也越來越多。對于手機(jī)平臺來說,如何在這么小的平臺上流暢的運(yùn)行一個程序變得越來越重要。其中網(wǎng)絡(luò)負(fù)載請求這塊是APP性能優(yōu)化的一個重要的部分。高性能的APP一般網(wǎng)絡(luò)數(shù)據(jù)請求效率也都非常的高,體驗(yàn)自然會得到提升。本文從Android平臺移動APP的網(wǎng)絡(luò)負(fù)載請求優(yōu)化入手,分析和設(shè)計(jì)一個基于APP網(wǎng)絡(luò)數(shù)據(jù)請求模塊的架構(gòu)和優(yōu)化設(shè)計(jì)方案。

【關(guān)鍵詞】 Android 網(wǎng)絡(luò) 網(wǎng)絡(luò)優(yōu)化 網(wǎng)絡(luò)架構(gòu)

一、Android系統(tǒng)結(jié)構(gòu)概述

1.1 Android架構(gòu)分析

Android是基于Linux的一套完善的開源移動終端平臺操作系統(tǒng),系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。從架構(gòu)圖看,android分為四個層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和linux核心層。

1.2 Android網(wǎng)絡(luò)模塊分析

Android網(wǎng)絡(luò)模塊一般分為兩種:基于Http協(xié)議的,基于Socket的。一般Socket是涉及到通訊聊天方面的APP采用的協(xié)議。這里我們只分析基于Http協(xié)議的部分。ANDROID系統(tǒng)網(wǎng)絡(luò)連接和管理服務(wù)由四個系統(tǒng)服務(wù)ConnectivityService、NetworkPolicyManagerService、NetworkManagementService、NetworkStatsService共同配合完成網(wǎng)絡(luò)連接和管理功能。幾個網(wǎng)絡(luò)管理服務(wù)搭配電源管理服務(wù),會針對各個網(wǎng)絡(luò)環(huán)境下,如2G,3G,4G,Wifi和無網(wǎng)絡(luò)環(huán)境下的網(wǎng)絡(luò)處理和電量相關(guān)優(yōu)化處理。

目前Android4.0后的系統(tǒng)是不允許任何網(wǎng)絡(luò)耗時請求在UI線程中操作請求,想請求網(wǎng)絡(luò)操作必須單獨(dú)去開啟一個線程或者異步任務(wù)去處理相關(guān)網(wǎng)絡(luò)操作,這樣不會阻塞UI線程,當(dāng)操作完成后通知UI線程更新界面和相應(yīng)的邏輯。

二、Android網(wǎng)絡(luò)負(fù)載請求優(yōu)化方案

2.1 Android 網(wǎng)絡(luò)優(yōu)化分析

一般造成APP卡頓不流暢,數(shù)據(jù)請求緩慢的網(wǎng)絡(luò)相關(guān)原因有:多網(wǎng)絡(luò)請求同時異步并發(fā);網(wǎng)絡(luò)請求的生命周期沒有和Activity和生命周期的聯(lián)動,Activity關(guān)閉后也可能某個網(wǎng)絡(luò)請求還在后臺進(jìn)行;網(wǎng)絡(luò)請求的優(yōu)先級處理不合理;重復(fù)網(wǎng)絡(luò)請求;網(wǎng)絡(luò)數(shù)據(jù)接口設(shè)計(jì)不合理;沒有設(shè)置網(wǎng)絡(luò)數(shù)據(jù)緩存;網(wǎng)絡(luò)請求的圖片沒有做緩存處理;創(chuàng)建過多的不必要對象,造成頻繁GC等。

2.2 APP架構(gòu)設(shè)計(jì)

采用MVC設(shè)計(jì)模式,邏輯業(yè)務(wù),數(shù)據(jù)和視圖層分離。這樣在后期改進(jìn)和個性化定制時不需要重新編寫業(yè)務(wù)邏輯。網(wǎng)絡(luò)請求框架采用谷歌自己的框架Volley。Volley是Ficus Kirpatrick在Gooogle I/O 2013發(fā)布的一個處理和緩存網(wǎng)絡(luò)請求的庫,能使網(wǎng)絡(luò)通信更快,更簡單,更健壯。Volley提供JSON,圖像等的異步下載;網(wǎng)絡(luò)請求的排序(scheduling);網(wǎng)絡(luò)請求的優(yōu)先級處理;緩存,多級別取消請求,和Activity和生命周期的聯(lián)動(Activity結(jié)束時同時取消所有網(wǎng)絡(luò)請求)。

2.3 Android優(yōu)化方案設(shè)計(jì)

在APP的程序中Application里創(chuàng)建一個全局網(wǎng)絡(luò)負(fù)載請求線程池,用于管理整個APP的網(wǎng)絡(luò)請求,并進(jìn)行優(yōu)先級排序處理。單例模式,保證APP全局只有一個網(wǎng)絡(luò)請求實(shí)例,避免創(chuàng)建過多對象,無法管理,耗費(fèi)系統(tǒng)資源。網(wǎng)絡(luò)線程池開辟一塊內(nèi)存空間,里面存放了眾多(未死亡)的線程,池中線程執(zhí)行調(diào)度由池管理器來處理。當(dāng)有線程任務(wù)時,從池中取一個,執(zhí)行完成后線程對象歸池,這樣可以避免反復(fù)創(chuàng)建線程對象所帶來的性能開銷,節(jié)省了系統(tǒng)的資源。

優(yōu)先級請求排序策略。設(shè)置線程池的核心線程數(shù)和最大線程數(shù)。所有 BlockingQueue 都可用于傳輸和保持提交的任務(wù)??梢允褂么岁?duì)列與池大小進(jìn)行交互:如果運(yùn)行的線程少于 corePoolSize,則 Executor 始終首選添加新的線程,而不進(jìn)行排隊(duì);如果運(yùn)行的線程等于或多于 corePoolSize,則 Executor 始終首選將請求加入隊(duì)列,而不添加新的線程;如果無法將請求加入隊(duì)列,則創(chuàng)建新的線程,除非創(chuàng)建此線程超出 maximumPoolSize,在這種情況下,任務(wù)將被拒絕。

網(wǎng)絡(luò)請求及時回收,與Activity同生命周期控制。在APP的全局Application里暴露一個添加和關(guān)閉回收網(wǎng)絡(luò)請求的List,用來及時的維護(hù)和銷毀網(wǎng)絡(luò)負(fù)載請求。這樣如果一個Activity停止的時候,同時取消所有或部分未完成的網(wǎng)絡(luò)請求。這樣就做到了多級別取消請求和Activity和生命周期的聯(lián)動。

合理的數(shù)據(jù)庫接口對接設(shè)計(jì)。在不影響數(shù)據(jù)庫請求效率和負(fù)載的前提下,用盡可能的少的接口去為APP提供數(shù)據(jù)。例如一個APP的界面Activity,盡量用最少的請求獲取網(wǎng)絡(luò)數(shù)據(jù)。這樣少量的網(wǎng)絡(luò)請求會提升APP穩(wěn)定性和流暢性。

設(shè)置網(wǎng)絡(luò)超時時間和網(wǎng)絡(luò)請求緩存。對于網(wǎng)絡(luò)請求如果不設(shè)置合理的超時時間,會導(dǎo)致某個請求在服務(wù)器沒有返回?cái)?shù)據(jù)的情況下,不停地一直在后臺運(yùn)行,耗費(fèi)內(nèi)存,所以設(shè)置超時時間會避免這一問題的出現(xiàn)。同時可以根據(jù)需要適當(dāng)設(shè)置下網(wǎng)絡(luò)請求緩存,當(dāng)重復(fù)請求某個接口時在規(guī)定的緩存有效時間內(nèi),讀取網(wǎng)絡(luò)緩存,可以減少耗費(fèi)流量和優(yōu)化速度。

設(shè)立數(shù)據(jù)庫緩存機(jī)制。可以使用內(nèi)置SQlite進(jìn)行相應(yīng)的網(wǎng)絡(luò)返回的數(shù)據(jù)進(jìn)行緩存。優(yōu)先存儲一些固定的信息到數(shù)據(jù)庫,例如用戶的永遠(yuǎn)不會變得信息,如id,性別,出生日期類似的?;\統(tǒng)的說,不變文件的緩存時間是永久,變化文件的緩存時間是最大忍受不變時間。采用緩存,可以進(jìn)一步大大緩解數(shù)據(jù)交互的壓力,又能提供一定的離線瀏覽。當(dāng)然緩存的數(shù)據(jù)需要更新的也要及時更新緩存。

設(shè)置圖片緩存,并且針對列表ListView或GridView等進(jìn)行優(yōu)化。圖片處理加載在Android開發(fā)中經(jīng)常會用到,圖片加載是一個非常耗費(fèi)內(nèi)存的,過大和過多就會造成內(nèi)存溢出。簡單的緩存邏輯就是緩存網(wǎng)絡(luò)圖片到本地文件夾,下次重復(fù)加載時判斷本地緩存是否有,有的話讀取本地緩存,沒有就重新獲取,加載網(wǎng)絡(luò)圖片也是異步處理。圖片處理要考慮多線程,緩存,內(nèi)存溢出等很多方面。對于一些縮略圖和原圖顯示要處理得當(dāng),縮略圖顯示的地方要講圖片壓縮處理合適尺寸。像ListView和GridView這種列表在滾動和停止時要對圖片加載進(jìn)行處理,滾動時停止圖片加載工作,停止?jié)L動列表后再進(jìn)行加載圖片數(shù)據(jù)。這樣可以避免滑動中列表卡頓和內(nèi)存溢出情況。

三、總結(jié)

對于APP性能方面的優(yōu)化有很多方面,其中網(wǎng)絡(luò)方面是一個重要的方向,大部分的APP的數(shù)據(jù)都是要和網(wǎng)絡(luò)打交道,所以很好的使用網(wǎng)絡(luò)請求、根據(jù)不同的情況和需求進(jìn)行變更算法和優(yōu)化策略尤為重要。良好的優(yōu)化網(wǎng)絡(luò)策略會讓APP變得更加的快速,體驗(yàn)更加的優(yōu)秀。

猜你喜歡
網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)優(yōu)化網(wǎng)絡(luò)
淺談地鐵通信無線系統(tǒng)覆蓋
基于電氣自動化技術(shù)的研究
農(nóng)產(chǎn)品質(zhì)量安全追溯系統(tǒng)的混合模式研究
信息辦公平臺網(wǎng)絡(luò)優(yōu)化設(shè)計(jì)
無線傳感器網(wǎng)絡(luò)優(yōu)化的應(yīng)用與研究
科技視界(2016年18期)2016-11-03 22:35:48
運(yùn)用負(fù)載均衡技術(shù)來實(shí)現(xiàn)網(wǎng)絡(luò)優(yōu)化
油氣集輸系統(tǒng)信息化發(fā)展形勢展望
基于網(wǎng)絡(luò)的信息資源組織與評價現(xiàn)狀及發(fā)展趨勢研究
基于網(wǎng)絡(luò)的中學(xué)閱讀指導(dǎo)
考試周刊(2016年79期)2016-10-13 21:50:36
新形勢下地市報(bào)如何運(yùn)用新媒體走好群眾路線
中國記者(2016年6期)2016-08-26 13:02:28
西丰县| 河北省| 临颍县| 蚌埠市| 文水县| 扎鲁特旗| 海原县| 宣汉县| 尤溪县| 淳化县| 辉南县| 贵溪市| 德格县| 陇南市| 托克逊县| 焉耆| 射洪县| 福鼎市| 湖南省| 株洲县| 蓝山县| 奇台县| 庄浪县| 丰顺县| 大悟县| 定襄县| 新和县| 城口县| 龙岩市| 育儿| 五莲县| 横山县| 宜城市| 福泉市| 柳河县| 龙南县| 定边县| 江城| 洱源县| 类乌齐县| 惠东县|