Найдите, сколько сетевого трафика генерируют другие приложения для Android

StackOverflow https://stackoverflow.com/questions/5327985

Вопрос

Я пытаюсь сделать фоновую услугу, которая должна измерить использование трафика различных приложений, чтобы иметь возможность показать пользователю, какой приложения потребляют большую часть трафика данных.

Я обнаружил, что приложение для запасных частей делает именно это, но после установки его на устройстве Dell Streak 1.6 я всегда получаю «Данные об использовании батареи» для «использования сети». Работает ли эта функция в запасных частях? Кроме того, я не мог найти рабочий исходный код для запасных частей.

https://android.googlesource.com/platform/development/+/froyo-release/apps/spareparts
выглядит устаревшим или неполным. (?)

Но запасные части, кажется, измеряют, например, использование процессора на приложение. Как это делает это на неровном телефоне?

Мое общее представление о том, как можно измерить трафик на приложение, - это регулярно проверять

"sys/class/net/" + sWiFiInterface + "/statistics/rx_bytes"

"sys/class/net/" + sWiFiInterface + "/statistics/tx_bytes"

"sys/class/net/" + sMobileInterface + "/statistics/rx_bytes"

"sys/class/net/" + sMobileInterface + "/statistics/tx_bytes"

файлы и увидеть, какое приложение в настоящее время сосредоточено, и, следовательно, скорее всего, вызовет сгенерированный сетевой трафик.

К сожалению, я не могу найти, как получить приложение, которое в настоящее время сосредоточено.

Я нашел это:

Android, как получить информацию о том, какую деятельность показывает в настоящее время (в вырезоде)?

Но, кажется, речь идет о тестировании, а не только 3D-сервисе, работающем на устройстве Android, не выровненном.

Мы можем получить то, с какими действиями занимаются ActivityManager.getCurrentTasks(), но любой из них может быть тем, кто сфокусирован. Похоже, что архитекторы Android явно не хотят, чтобы 3D -приложения знали, на каком приложении фокусируется из -за проблем безопасности

(видеть http://android.bygresource.com/track/android-zb2mhvzx4/).

Есть ли способ обойти это?

Кроме того, если я хочу не только обнаружить, какие виды деятельности съедают трафик, но и какие услуги я могу получить все в настоящее время услуги.ActivityManager.getCurrentSerives()И даже посмотрите на каждый из них, если он находится в режиме переднего плана (в отличие от того, чтобы быть выброшенным, если Android нужны ресурсы). Но это снова не делает меня далеко.

Любые идеи?

Это было полезно?

Решение

Вы можете обнаружить в настоящее время на переднем плане применения с ActivityManager.getRunningAppProcesses вызов. Он вернет список RunningAppProcessInfo записи Чтобы определить, какое приложение находится на проверке переднего плана RunningAppProcessInfo.importance поле для равенства в RunningAppProcessInfo.IMPORTANCE_FOREGROUND.

Но будьте посвящены, чтобы призывать ActivityManager.getRunningAppProcesses() Метод должен выполняться не в потоке пользовательского интерфейса. Просто назовите его в фоновом потоке (например, через Asynctask), и он вернет правильные результаты. Проверять мой пост Для получения дополнительной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top