日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android開發(fā)中網(wǎng)絡(luò)編程與常見功能優(yōu)化總結(jié)

一般的應(yīng)用都是從服務(wù)器獲取數(shù)據(jù),然后通過極致的界面風(fēng)格,將數(shù)據(jù)清晰,明朗的展現(xiàn)給用戶。

那么就可以分為這兩塊:


1.界面UI   追求極致
2.功能


2.1獲取數(shù)據(jù):主要是與服務(wù)器通信,那么就要涉及到網(wǎng)絡(luò)編程 :


2.1.1  URlConnection 


2.1.2  HttpURLConnection(post get)


2.1.3  Socket


2.1.4  HttpClient(post get)


2.1.5  WebService(自己拼裝請求xml 數(shù)據(jù),采用開源jar包 ksoap-android-)


2.2網(wǎng)絡(luò)通信的時候,采用的異步數(shù)據(jù)獲取


2.2.1   AsynTask android 封裝好的異步數(shù)據(jù)獲取,包括三個方法

doInBackground 執(zhí)行在子線程中的異步方法

onProgressUpdate 數(shù)據(jù)獲取之后 執(zhí)行的方法,在主線程中可以在這里更新UI界面

onPostExecute   異步方法執(zhí)行前,可以進(jìn)行界面友好提示 在主線程中執(zhí)行的方法


2.2.2  自己封裝一個任務(wù)類(子線程)thread   采用線程池 這里需要自己維護(hù)一個任務(wù)列表,并且做到任務(wù)的優(yōu)先級


2.3 android優(yōu)化 最常見的就是listview 的大數(shù)據(jù)優(yōu)化  圖片優(yōu)化  訪問網(wǎng)絡(luò)的優(yōu)化


2.3.1 優(yōu)化的原則: 數(shù)據(jù)延遲加載  分批加載  本地緩存


2.3.2 listview 數(shù)據(jù)優(yōu)化 復(fù)用contentview  

創(chuàng)建static class ViewHolder

分批加載 滑動監(jiān)聽 或者按鈕  顯示更多數(shù)據(jù)  往下拖動 顯示


2.3.3 listview 圖片優(yōu)化  異步加載  

本地緩存(二級緩存  內(nèi)存(軟引用實(shí)現(xiàn)),sd卡)  

快速滑動時不顯示圖片

分為核心線程池和普通線程池,下載圖片等耗時任務(wù)放置在普通線程池


2.3.4 超級大胖子Bitmap

及時的銷毀(Activity的onDestroy時將bitmap回收,

在被UI組件使用后馬上進(jìn)行回收會拋RuntimeException:

Canvas:tryingtousearecycledbitmapandroid.graphics.Bitmap)

設(shè)置一定的采樣率(有開發(fā)者提供的圖片無需進(jìn)行采樣,

對于有用戶上傳或第三方的大小不可控圖片,可進(jìn)行采樣減少圖片所占的內(nèi)存),

從服務(wù)端返回圖片,建議同時反饋圖片的size巧妙的運(yùn)用軟引用drawable對應(yīng)resid的資源,

bitmap對應(yīng)其他資源任何類型的圖片,如果獲取不到(例如文件不存在,或者讀取文件時跑OutOfMemory異常),

應(yīng)該有對應(yīng)的默認(rèn)圖片(默認(rèn)圖片放在在apk中,通過resid獲?。?br />

2.3.5 Drawable

ui組件需要用到的圖片是apk包自帶的,、

那么一律用setImageResource或者setBackgroundResource,而不要根據(jù)resourceid


注意:get(getResources(),R.drawable.btn_achievement_normal)該方法通過resid轉(zhuǎn)換為drawable,

需要考慮回收的問題,如果drawable是對象私有對象,在對象銷毀前是肯定不會釋放內(nèi)存的。


2.3.6 訪問網(wǎng)絡(luò)優(yōu)化

設(shè)置超時時間,采用壓縮流 傳送數(shù)據(jù) 
2.3.7  內(nèi)存優(yōu)化,static是Java中的一個關(guān)鍵字,當(dāng)用它來修飾成員變量時,那么該變量就屬于該類,而不是該類的實(shí)例。所以用static修飾的變量,它的生命周期是很長的。

優(yōu)化方法:在一個工程中集中管理這些靜態(tài)常量 

盡量避免static成員變量的使用,

使用SoftReference或者WeakReference代替強(qiáng)引用

盡量避免在一個activity里面寫線程內(nèi)部類:

線程是Activity的內(nèi)部類,所以Thread中保存了Activity的一個引用,當(dāng)run函數(shù)沒有結(jié)束時,Thread是不會被銷毀的,

因此它所引用的老的Activity也不會被銷毀,當(dāng)這些activity加載了很多資源,沒有釋放也就很容易出現(xiàn)了內(nèi)存泄露

的問題。

Android提供的AsyncTask,但事實(shí)上AsyncTask的問題更加嚴(yán)重,Thread只有在run函數(shù)不結(jié)束時才出現(xiàn)這種內(nèi)存泄露問題,然而AsyncTask內(nèi)部的實(shí)現(xiàn)機(jī)制是運(yùn)用了

ThreadPoolExcutor,該類產(chǎn)生的Thread對象的生命周期是不確定的,是應(yīng)用程序無法控制的,

因此如果AsyncTask作為Activity的內(nèi)部類,就更容易出現(xiàn)內(nèi)存泄露的問題。

那么就自己寫一個線程類,管理這些任務(wù)。

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的安寧網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!


新聞名稱:Android開發(fā)中網(wǎng)絡(luò)編程與常見功能優(yōu)化總結(jié)
鏈接分享:http://m.5511xx.com/article/cdgcodp.html