Я пытаюсь получить мобильное использование данных Android для каждого приложения с помощью NetworkStatsManager.
Я иду бросить AM.getRunningAppProcesses (), AM.getRunningServices () и AM.getInstalledApplications (). Для каждого идентификатора:
networkStats = networkStatsManager.queryDetailsForUid(
ConnectivityManager.TYPE_MOBILE,
getSubscriberId(context, ConnectivityManager.TYPE_MOBILE),
startTime,
endTime,
uid)
long dataTx = 0;
long dataRx = 0;
while (networkStats.hasNextBucket()) {
NetworkStats.Bucket bucket = new NetworkStats.Bucket();
if(networkStats.getNextBucket(bucket)) {
dataTx += bucket.getTxBytes();
dataRx += bucket.getRxBytes();
}
}
Все выглядит нормально, когда я сравниваю свой телефон и данные, которые я получаю, но для android ui (android.uid.system) возвращает только использование данных на переднем плане. Для остальных приложений я получаю информацию как на переднем, так и на заднем плане.
Я сделал что-то другое для этого uid? Или эта информация (фон) по какой-то причине скрыта?