Android 流量统计在启动时重置
嗨,我正试图通过使用下面的代码来了解每个android应用程序的使用情况Android 流量统计在启动时重置,android,network-traffic,Android,Network Traffic,嗨,我正试图通过使用下面的代码来了解每个android应用程序的使用情况 PackageManager packageManager = getActivity().getPackageManager(); List<PackageInfo> applist = packageManager.getInstalledPackages(0); Iterator<PackageInfo> it = applist.iterator(); while
PackageManager packageManager = getActivity().getPackageManager();
List<PackageInfo> applist = packageManager.getInstalledPackages(0);
Iterator<PackageInfo> it = applist.iterator();
while (it.hasNext()) {
PackageInfo pk = (PackageInfo) it.next();
if (pk.versionName == null) {
continue ;
}
double received = (double) TrafficStats.getUidRxBytes(pk.applicationInfo.uid)
/ (1024 * 1024);
double send = (double) TrafficStats.getUidTxBytes(pk.applicationInfo.uid)
/ (1024 * 1024);
double total = received + send;
textview.setText(pk.applicationInfo.loadLabel(
getActivity().getPackageManager())
.toString() + " " +String.format( "%.2f", total )+" MB");
}
PackageManager-PackageManager=getActivity().getPackageManager();
List applist=packageManager.getInstalledPackages(0);
迭代器it=applist.Iterator();
while(it.hasNext()){
PackageInfo pk=(PackageInfo)it.next();
如果(pk.versionName==null){
继续;
}
double received=(double)TrafficStats.getUidRxBytes(pk.applicationInfo.uid)
/ (1024 * 1024);
double send=(double)TrafficStats.getUidTxBytes(pk.applicationInfo.uid)
/ (1024 * 1024);
双倍合计=接收+发送;
textview.setText(pk.applicationInfo.loadLabel(
getActivity().getPackageManager())
.toString()+“”+String.format(“%.2f”,总计)+“MB”);
}
但如果设备重新启动,则会删除这些值。但在设备中,如果你去安卓设置->数据使用->使用仍然存在。我的问题是
从何处读取每个应用程序的数据使用情况
代码解释很有帮助。谢谢。TrafficStats.getUidRxBytes(int)将仅从设备启动返回数据使用情况。为什么不尝试将流量数据写入文件,以便在引导后可用?您可以构建一个START\u REDELIVER\u INTENT服务在后台运行您找到解决方案了吗?我没有找到任何:(UID对于应用程序来说不是永久性的。如果UID不是最活跃的,或者android中的任何其他算法,它将被系统更改。但是,如果您看到nexus或任何4.4.4+设备的使用情况,您甚至可以获得过去几个月每个应用程序的所有数据使用情况。@Fabin Paul每天开机后如何获取保存的数据。