Как я могу проверить потребление сети моего Android-приложения? [закрытый]
Мне нужно проверить интернет-потребление моего Android-приложения. В моем приложении у меня есть множество вызываемых API веб-служб.
Я хочу знать, сколько мое приложение потребляет интернет в КБ/Мб на полном ходу.
Как я могу это проверить? Есть ли инструмент, чтобы проверить это?
5 ответов
Android Studio 2.0 ввести новый на Android Monitor
, который может помочь вам с вашей проблемой.
Tx == Transmit Bytes Rx == Receive Bytes
есть три способа...
вы можете просмотреть в устройстве / эмуляторе. Перейти к настройки -> передача данных, и найдите свое приложение в списке
в Eclipse, выберите DDMS (перспектива) - > выберите пакет из устройств (слева) - > нажмите на вкладку Статистика сети - > Нажмите кнопку Пуск
Как уже ответили, в Android Studio, go к Android Monitor (нижняя вкладка) - > сеть (вкладка) - > поиск 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 Монитор.
в этом есть много тем, которые вы можете контролировать.
вы найдете Сетевой Монитор.
отображение запущенного приложения на сетевом мониторе:
выполните следующие действия:
- подключение устройства.
- Дисплей Android Монитор.
- перейдите на вкладку Сеть.
- открыть приложение проект и запустить его на устройстве.
- чтобы запустить сетевой монитор, щелкните значок паузы, чтобы отменить его выбор.
сетевой трафик начинает появляться в сетевом мониторе:
сетевой монитор добавляет количество времени, которое требуется устройству для передачи и приема килобайт данных. Ось y находится в килобайтах в секунду. Ось x начинается с секунд, а затем минут и секунд, и так далее.
- чтобы остановить сетевой монитор, снова щелкните значок паузы, чтобы выбрать его.
ссылки: Android Монитор
Если вы хотите проверить свое потребление сети приложений с помощью каких-либо инструментов, используйте Android Studio 2.0, который вы можете видеть. См. ниже, как его использовать
Сетевой Монитор
сетевой монитор позволяет отслеживать, когда ваше приложение делает запросы по сети. С помощью этого инструмента можно отслеживать, как и когда приложение передает данные, и соответствующим образом оптимизировать базовый код.
мониторинг частоты передачи данных, и количество данных, передаваемых во время каждого соединения, вы можете определить области вашего приложения, которые могут быть более эффективными и использовать меньше заряда батареи. Как правило, вы должны искать короткие спайки, которые могут быть отложены или которые могут привести к более позднему переносу.
отображение запущенного приложения в сетевом мониторе
выполните следующие действия:
- подключение устройства.
- Дисплей Android Монитор.
- перейдите на вкладку Сеть.
- откройте проект приложения и запустить на аппаратном устройстве.
- чтобы запустить сетевой монитор, щелкните значок паузы, чтобы отменить его выбор.
сетевой монитор добавляет количество времени, необходимое устройству для передачи и приема килобайт данных. Ось 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);
}
};
}