Как я могу проверить потребление сети моим Android-приложением?
Мне нужно проверить интернет-потребление моего Android-приложения. В моем приложении у меня есть множество вызываемых API веб-сервисов.
Я хочу знать, насколько полно мое приложение потребляет Интернет в КБ / МБ.
Как я могу это проверить? Есть ли инструмент, чтобы проверить это?
5 ответов
Android Studio 2.0 Представляем новое Network
раздел в Android Monitor
который может помочь вам с вашей проблемой.
Tx == Transmit Bytes Rx == Receive Bytes
Есть три способа...
Вы можете просмотреть в устройстве / эмуляторе. Перейдите в Настройки -> Использование данных и найдите свое приложение в списке.
В Eclipse выберите DDMS (в перспективе) -> выберите пакет из списка "Устройства" (слева) -> нажмите вкладку "Статистика сети" -> нажмите "Пуск".
Как уже было сказано, в Android Studio перейдите в Android Monitor (нижняя вкладка) -> Network (вкладка) -> найдите Tx (передача данных) / Rx (получение данных)
Для просмотра вы можете проверить это на мониторе, как упомянуто MD.
Для хранения вы можете сделать это программно
int UID = android.os.Process.myUid();
rxBytes += getUidRxBytes(UID);
txBytes += getUidTxBytes(UID);
/**
* Read UID Rx Bytes
*
* @param uid
* @return rxBytes
*/
public Long getUidRxBytes(int uid) {
BufferedReader reader;
Long rxBytes = 0L;
try {
reader = new BufferedReader(new FileReader("/proc/uid_stat/" + uid
+ "/tcp_rcv"));
rxBytes = Long.parseLong(reader.readLine());
reader.close();
}
catch (FileNotFoundException e) {
rxBytes = TrafficStats.getUidRxBytes(uid);
//e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return rxBytes;
}
/**
* Read UID Tx Bytes
*
* @param uid
* @return txBytes
*/
public Long getUidTxBytes(int uid) {
BufferedReader reader;
Long txBytes = 0L;
try {
reader = new BufferedReader(new FileReader("/proc/uid_stat/" + uid
+ "/tcp_snd"));
txBytes = Long.parseLong(reader.readLine());
reader.close();
}
catch (FileNotFoundException e) {
txBytes = TrafficStats.getUidTxBytes(uid);
//e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return txBytes;
}
}
Если вы хотите проверить сетевое потребление приложений с помощью каких-либо инструментов, используйте Android Studio 2.0, который вы видите. Смотрите ниже, как его использовать
Сетевой монитор
Сетевой монитор позволяет отслеживать, когда ваше приложение выполняет сетевые запросы. Используя этот инструмент, вы можете отслеживать, как и когда ваше приложение передает данные, и соответствующим образом оптимизировать базовый код.
Отслеживая частоту передачи данных и объем данных, передаваемых во время каждого соединения, вы можете определить области своего приложения, которые можно сделать более эффективными и использовать меньше энергии аккумулятора. Как правило, вы должны искать короткие всплески, которые могут быть отложены или могут привести к прерыванию более поздней передачи.
Отображение запущенного приложения в сетевом мониторе
Следуй этим шагам:
- Подключите аппаратное устройство.
- Дисплей Android Monitor.
- Нажмите вкладку Сеть.
- Откройте проект приложения и запустите его на аппаратном устройстве.
- Чтобы запустить сетевой монитор, щелкните значок "Пауза", чтобы отменить выбор.
Сетевой монитор складывает количество времени, которое требуется устройству для передачи и получения килобайт данных. Ось Y указана в килобайтах в секунду. Ось X начинается с секунд, а затем минут и секунд и т. Д.
- Чтобы остановить сетевой монитор, снова щелкните значок "Пауза", чтобы выбрать его.
ИЛИ ЖЕ
Вы хотите отобразить потребление сети с собственным приложением, а затем использовать приведенный ниже пример
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textStyle="bold"
android:gravity="center"
android:paddingBottom="20dip"
android:text="Traffic Stats Demo" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="#00ff00"
android:gravity="center"
android:text="Transmit Bytes" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:gravity="center"
android:text="0"
android:id="@+id/TX"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="#ff0000"
android:gravity="center"
android:text="Receive Bytes" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:gravity="center"
android:text="0"
android:id="@+id/RX"/>
</LinearLayout>
Main.java
import android.app.Activity;
import android.app.AlertDialog;
import android.net.TrafficStats;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class Main extends Activity {
private Handler mHandler = new Handler();
private long mStartRX = 0;
private long mStartTX = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mStartRX = TrafficStats.getTotalRxBytes();
mStartTX = TrafficStats.getTotalTxBytes();
if (mStartRX == TrafficStats.UNSUPPORTED || mStartTX == TrafficStats.UNSUPPORTED) {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Uh Oh!");
alert.setMessage("Your device does not support traffic stat monitoring.");
alert.show();
}
else {
mHandler.postDelayed(mRunnable, 1000);
}
}
private final Runnable mRunnable = new Runnable() {
public void run() {
TextView RX = (TextView)findViewById(R.id.RX);
TextView TX = (TextView)findViewById(R.id.TX);
long rxBytes = TrafficStats.getTotalRxBytes() - mStartRX;
RX.setText(Long.toString(rxBytes));
long txBytes = TrafficStats.getTotalTxBytes() - mStartTX;
TX.setText(Long.toString(txBytes));
mHandler.postDelayed(mRunnable, 1000);
}
};
}
Посмотрите: Android Monitor.
В этом есть много тем, которые вы можете отслеживать.
Вы найдете сетевой монитор.
Отображение запущенного приложения в сетевом мониторе:
Следуй этим шагам:
- Подключите аппаратное устройство.
- Дисплей Android Monitor.
- Нажмите вкладку Сеть.
- Откройте проект приложения и запустите его на аппаратном устройстве.
- Чтобы запустить сетевой монитор, щелкните значок "Пауза", чтобы отменить выбор.
Любой сетевой трафик начинает появляться в сетевом мониторе:
Сетевой монитор складывает количество времени, которое требуется устройству для передачи и получения килобайт данных. Ось Y указана в килобайтах в секунду. Ось X начинается с секунд, а затем минут и секунд и т. Д.
- Чтобы остановить сетевой монитор, снова щелкните значок "Пауза", чтобы выбрать его.
Ссылка: Android-монитор