Статистика сети Android: простой способ получить информацию о пакете отправлено / получено
У меня есть приложение для Android для мониторинга байтов / пакетов, полученных / переданных по сети. Я показываю эту информацию в текстовом виде:
<TextView
android:id="@+id/networkInfo"
android:layout_below="@id/toggle_apn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginTop="20dp"
android:background="@drawable/back"
android:gravity="left"
android:textSize="25dip"
android:text="Not connected" />
а затем через код Java:
mStartRX = TrafficStats.getTotalRxBytes();
mStartTX = TrafficStats.getTotalTxBytes();
mStartPRX=TrafficStats.getTotalRxPackets();
mStartPTX=TrafficStats.getTotalTxPackets();
if (mStartRX == TrafficStats.UNSUPPORTED || mStartTX == TrafficStats.UNSUPPORTED) {
...
}else{
mHandler.postDelayed(mRunnable, 1000);
}
и метод запуска mRunnable:
public void run() {
TextView RX = (TextView)findViewById(R.id.networkInfo);
long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX;
long txBytes = TrafficStats.getTotalTxBytes()- mStartTX;
long rxPackets=TrafficStats.getTotalRxPackets()-mStartPRX;
long txPackets=TrafficStats.getTotalTxPackets()-mStartPTX;
RX.setText("Here I put the data above");
mHandler.postDelayed(mRunnable, 1000);
}
Проблема в том, что, когда я возобновляю свою деятельность, мне приходится "вспоминать" обработчик, и количество байтов перезапускается с 0. Как я могу легко отслеживать значения в течение всей жизни моей деятельности???
1 ответ
Решение
Решается путем сохранения значений mstart в общих настройках, а затем возобновления их в "onResume".