NetworkStatsManager的查询耗时太长

时间:2017-08-20 20:53:16

标签: android networkstatsmanager

我尝试使用NetworkStatsManager获取每个应用程序最近30天使用的流量统计信息,因此我编写了如下代码:

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秒 - 如果我想同时获得{{1 }和TYPE_WIFI互联网使用它将超过50秒,这不是好事。 那么还有另一种方法吗?或许我在这里做错了导致这种延迟? 提前谢谢。

0 个答案:

没有答案