Android---優化下載讓網絡訪問更高效(四)

使用DDMS網絡流量工具來識別關注的區間

Android的DDMS(Dalvik Debug Monitor Server)包含了詳細的網絡使用情況選項卡,這使得跟蹤應用程序使用網絡情況成爲可能。使用這個工具,可以監視應用程序傳輸數據的方式和時機,並在此基礎上可以優化底層相關的代碼。

圖3顯示了大約每隔15秒鐘傳輸一次少量數據時網絡使用情況,建議通過預先獲取每個請求的數據或打包上傳的數據來改善網絡使用效率。

圖3. 使用DDMS跟蹤網絡的使用情況

通過監視數據傳輸的頻率和每次連接的傳輸的數據量,可以識別出應用程序耗電較多的區域。通常,應該尋找那些可以被延遲的短時峯值,或是那些由於被搶佔而延後的傳輸。

要更好的識別傳輸峯值所產生的原因,就要使用流量統計API,它允許你使用TrafficStats.setThreadStatsTag()方法來標記線程內部發生的數據傳輸情況,也可以使用tagSocket()和untagSocket()方法手動的標記(和解除標記)單獨的網絡套接字。例如:

TrafficStats.setThreadStatsTag(0xF00D);
TrafficStats
.tagSocket(outputSocket);
// Transfer data using socket
TrafficStats.untagSocket(outputSocket);

ApacheHttpClientURLConnection類庫會基於當前的getThreadStatsTag()方法的返回值來自動的標記網絡套接字。這些類庫也可以通過活動的保持池(keep-alive pools)標記網絡套接字,並在回收時解除標記。

TrafficStats.setThreadStatsTag(0xF00D);
try
{
  // Make network request usingHttpClient.execute()
} finally {
  TrafficStats.clearThreadStatsTag();
}

網絡套接字標記在Android4.0以後被支持,但是實時的統計結果只會被顯示在運行Android4.0.3以後的設備上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章