Запросы NetworkStatsManager занимают слишком много времени
Я пытаюсь получить статистику использования трафика за последние 30 дней для каждого приложения, используя NetworkStatsManager
поэтому я написал код следующим образом:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
NetworkStatsManager networkStatsManager = (NetworkStatsManager) getActivity().getSystemService(Context.NETWORK_STATS_SERVICE);
NetworkStats networkStats = null;
Log.d("CCC","start----"+System.currentTimeMillis());
networkStats = networkStatsManager.querySummary(ConnectivityManager.TYPE_WIFI,"",
System.currentTimeMillis()-2592000000L,
System.currentTimeMillis());
Log.d("CCC","END-"+System.currentTimeMillis());
} catch (RemoteException e) {}
NetworkStats.Bucket bucket = new NetworkStats.Bucket();
while (networkStats!=null && networkStats.hasNextBucket()) {
networkStats.getNextBucket(bucket);
Log.d("CCC",bucket.getUid()+"---"+bucket.getTxBytes()+"---"+bucket.getRxBytes());
}
});
thread.start();
Возвращенный результат кажется правильным, но проблема в том, что на запрос требуется слишком много времени -обычно 25 секунд- и если я хочу получить оба TYPE_WIFI
а также TYPE_MOBILE
Использование Интернета будет более 50 секунд, что не очень хорошо. Так есть ли другой способ сделать это? Или, возможно, я делаю что-то не так, что вызывает эту задержку? Заранее спасибо.