Как я могу проверить потребление сети моего Android-приложения? [закрытый]

Мне нужно проверить интернет-потребление моего Android-приложения. В моем приложении у меня есть множество вызываемых API веб-служб.

Я хочу знать, сколько мое приложение потребляет интернет в КБ/Мб на полном ходу.

Как я могу это проверить? Есть ли инструмент, чтобы проверить это?

5 ответов


Android Studio 2.0 ввести новый на Android Monitor, который может помочь вам с вашей проблемой.

enter image description here

Tx == Transmit Bytes Rx == Receive Bytes

есть три способа...

  1. вы можете просмотреть в устройстве / эмуляторе. Перейти к настройки -> передача данных, и найдите свое приложение в списке Enter image description here

  2. в Eclipse, выберите DDMS (перспектива) - > выберите пакет из устройств (слева) - > нажмите на вкладку Статистика сети - > Нажмите кнопку Пуск enter image description here

  3. Как уже ответили, в Android Studio, go к Android Monitor (нижняя вкладка) - > сеть (вкладка) - > поиск Tx (передача данных) / Rx (получение данных) Enter image description here


для целей просмотра вы можете проверить его на мониторе, как указано 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 Монитор.
  • перейдите на вкладку Сеть.
  • открыть приложение проект и запустить его на устройстве.
  • чтобы запустить сетевой монитор, щелкните значок паузы, чтобы отменить его выбор.

сетевой трафик начинает появляться в сетевом мониторе:

Enter image description here

сетевой монитор добавляет количество времени, которое требуется устройству для передачи и приема килобайт данных. Ось y находится в килобайтах в секунду. Ось x начинается с секунд, а затем минут и секунд, и так далее.

  • чтобы остановить сетевой монитор, снова щелкните значок паузы, чтобы выбрать его.

ссылки: Android Монитор


Если вы хотите проверить свое потребление сети приложений с помощью каких-либо инструментов, используйте Android Studio 2.0, который вы можете видеть. См. ниже, как его использовать

Сетевой Монитор

сетевой монитор позволяет отслеживать, когда ваше приложение делает запросы по сети. С помощью этого инструмента можно отслеживать, как и когда приложение передает данные, и соответствующим образом оптимизировать базовый код.

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

отображение запущенного приложения в сетевом мониторе

выполните следующие действия:

  1. подключение устройства.
  2. Дисплей Android Монитор.
  3. перейдите на вкладку Сеть.
  4. откройте проект приложения и запустить на аппаратном устройстве.
  5. чтобы запустить сетевой монитор, щелкните значок паузы, чтобы отменить его выбор.

Enter image description here

сетевой монитор добавляет количество времени, необходимое устройству для передачи и приема килобайт данных. Ось y находится в килобайтах в секунду. Ось x начинается с секунд, и потом минуты, секунды и так далее.

  1. чтобы остановить сетевой монитор, снова щелкните значок паузы, чтобы выбрать его.

или

вы хотите отобразить потребление сети с собственным приложением, а затем использовать ниже пример

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);
         }
     };
 }