Запросы 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 секунд, что не очень хорошо. Так есть ли другой способ сделать это? Или, возможно, я делаю что-то не так, что вызывает эту задержку? Заранее спасибо.

0 ответов

Другие вопросы по тегам