所有
我是android的新手,只是开发app来显示当前的下载/上传速度。我从这个Example得到了一些提示。它使用TrafficStats.getTotalRxBytes()函数返回引导后收到的总字节数并单调增加。
所以我使用下面的代码,只显示当前可用速度。但我没有得到结果。它仅显示Total Tx / Rx值。
有没有替代方法可以实现这一目标?任何代码片段都会非常受欢迎,因为我是一个完整的初学者。
另外,我无法理解下面的代码。有人可以解释一下吗?
private final Runnable mRunnable = new Runnable()
我需要每隔一秒刷新textView中显示的数据。我猜猜想
mHandler.postDelayed(mRunnable, 1000) ( );
用于做到这一点。还有其他选择吗?如果没有,使用PostDelayed功能时控制流程如何? (我有点困惑)
public class MainActivity extends Activity {
private Handler mHandler = new Handler();
private long mStartRX =0;
private long mStartTX = 0;
private static final int RESULT_SETTINGS = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler.postDelayed(mRunnable, 1000);
}
private final Runnable mRunnable = new Runnable()
{
public void run()
{
long TxResult=0;
long RxResult=0;
long or1=0,or2=0;
long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX-or1;
if (rxBytes<1024)
{
RxResult=0;
}
else if (rxBytes>1024)
{
// RxResult=0;
RxResult=RxResult+(rxBytes/1024);
}
TextView RX = (TextView)findViewById(R.id.rxOut);
//mStartRX=rxBytes;
TextView TX = (TextView)findViewById(R.id.txOut);
RX.setText(Long.toString(RxResult));
long txBytes = TrafficStats.getTotalTxBytes()- mStartTX-or2;
if (txBytes<1024)
{
TxResult=0;
}
else if (txBytes>1024)
{
TxResult=0;
TxResult=TxResult+(txBytes/1024);
}
TX.setText(Long.toString(TxResult));
or2=or2+txBytes;
or1=or1+rxBytes;
mHandler.postDelayed(mRunnable, 100);
}
};