全部,
我是 android 的新手,只是开发应用程序来显示当前的下载/上传速度。我从这个示例中得到了一些提示。它使用 TrafficStats.getTotalRxBytes() 函数,该函数返回启动后接收的总字节数并单调增加。
所以我使用下面的代码,只显示当前可用速度。但我没有得到结果。它仅显示总 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); } };