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