簡體   English   中英

當我的應用程序在后台運行時,如何檢測導致大量數據使用的原因

[英]How to detect the cause for HUGE data usage when my app in background

我們有一個擁有超過一百萬活躍用戶的Android應用。 我們最近開始收到用戶的反饋,抱怨說我們的應用程序在后台(一周大約0.5-3 GB)時會消耗大量網絡數據。

除了沒有網絡調用的推送通知接收器外,該應用程序在后台沒有任何操作。 確保后台一周的數據消耗少於10 MB。

當我的應用程序在后台運行時,是否可以使用代碼來幫助我找出造成此數據消耗的原因?

當我的應用程序在后台運行時,是否可以限制所有SDK的數據訪問?

通常,解決此問題的最佳方法是什么?

謝謝

更新:

在我們的案例中,我們最終發現問題的根源來自與該應用程序集成的SDK。

如果您遇到相同的問題,建議您仔細查看應用中的所有第三方代碼,尤其是添加的新庫。

其次,檢查您的應用程序在清單中定義的所有服務,仔細查看這些服務中的任何服務是否可能是此問題的根源。

第三,在應用程序中使用重試機制的網絡操作位置,可能存在無限的“ while循環”,試圖將一些數據發送到服務器(可能是某種報告或分析)。

您需要檢查來自設備的有線通信。 您將需要一台計算機,並且您的設備連接到同一局域網。

  1. 在本地網絡的計算機上設置調試代理(如Fiddler) ,並記下其IP地址。 假設您的應用程序通過HTTP進行通信。
  2. 通過WiFi將測試設備連接到調試機所在的網絡。
  3. 將您的Android設備配置為使用指向調試計算機的代理

現在,您將能夠檢查源自設備的所有請求。 大概您將不得不讓它們運行一段時間,以重現某種定期后台服務運行和下載數據的問題。 但是,我現在可以告訴您,推送通知本身不會在單個設備上引起3GB的數據。

您可以按以下方式編寫代碼以計算數據使用量。

  recived = TrafficStats.getUidRxBytes(uid);// uid is your appID
send = TrafficStats.getUidTxBytes(uid);

TrafficStats.getMobileRxBytes(); 
TrafficStats.getMobileTxBytes(); 

TrafficStats.getTotalRxBytes();
TrafficStats.getTotalTxBytes();

你可以在這里找到一個很好的答案。

應用數據使用情況查找

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM