TrafficStats:关于Tx和Rx数据消耗(getUidRx / TxBytes)

时间:2017-07-21 10:02:16

标签: java android android-trafficstats

我出现的时间^^

嗯,我对编程有点新意,但我快速成长^^

我希望,我不会让你头疼我的英语'

所以我在这里谈谈" TrafficStats"功能,特别是关于Rx。

事实上,实际上我正在开发一个Android应用程序,在此我展示了有关此应用程序的数据消耗。

我正在使用" getUidRxBytes"和" getUidTxBytes" 因此,如果我在Android文档中很好理解,Tx是Transmitted,那么它的上传(UL)和Rx是收到的,所以它的下载(DL),对吧? 因此,数据消耗应该是正确的加法(UL + DL =数据消耗)???

所以我遇到了一个问题,在推出我的应用程序之前,这个应用程序的数据消耗量(在数据使用选项中):

Data usage before using app

如您所见,我使用了588 MB

我启动了我的应用程序,我在这个应用程序中启动了一个视频,来自dailymotion(调用它的sdk),多次完成足够的数据。

My apps with counters

看起来我在Tx中使用了59.25 MB,在Rx中使用了122.08 MB。 (所以它应该是181.33MB)

当我回顾这个应用程序的数据消耗时(如下所示):

(不允许发布2个以上的链接,所以请相信我:x)

它显示,实际上是差异(高达650MB)所以相差62 MB

所以它似乎只与数据Tx匹配(有一点%误差)(所以UL)

我正在使用第三方&#34;(我无法告诉你)谁给了我应用程序中使用的数据,它只与Tx匹配!< / p>

- &GT;我的问题 : Rx(所以DL)数据在哪里? 你认为Rx方法有问题吗? (方法或函数?xD)或Tx也是因为它应该是Tx + Rx而不仅仅是Tx。

附件:这是我使用TrafficStats的代码

public class youtube_activity  extends AppCompatActivity {

private Handler mHandler1 = new Handler();
private Handler mHandler2 = new Handler();
private Handler mHandler3 = new Handler();

private long mStartRX1 = 0;
private long mStartTX1 = 0;
private long mStartRX2 = 0;
private long mStartTX2 = 0;
private long mStartRX3 = 0;
private long mStartTX3 = 0;
private long mStartRX4 = 0;
private long mStartTX4 = 0;

private PlayerWebView mVideoView;

int UID = android.os.Process.myUid();

public static final String API_KEY = "my API KEY";

public static final String VIDEO_ID = "e4gDgggbWAM";

int a,b,c,d,e,f;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.rien);

    mStartRX1 = TrafficStats.getUidRxBytes(UID);
    mStartTX1 = TrafficStats.getUidTxBytes(UID);


    mHandler1.postDelayed(mRunnable1, 1);

    mVideoView = (PlayerWebView) findViewById(R.id.youtube_player);
    mVideoView.load("x4ct1a5");

    Button button6 = (Button) findViewById(R.id.button6);
    button6.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            String mySdkKey = "Confidential";

            String myUserId = "Confidential";

            int sdIconId = R.drawable.ic_launcher2;


            Boolean sdkUserMessaging = true;


            mStartRX3 = TrafficStats.getUidRxBytes(UID);
            mStartTX3 = TrafficStats.getUidTxBytes(UID);


            mHandler2.postDelayed(mRunnable2, 1);

            mHandler3.postDelayed(mRunnable3, 1);

        }
    });

}

private final Runnable mRunnable1 = new Runnable() {
    public void run() {
        TextView RX1 = (TextView)findViewById(R.id.RX1);
        TextView TX1 = (TextView)findViewById(R.id.TX1);

        long rxBytes1 = (TrafficStats.getUidRxBytes(UID) - mStartRX1) ;
        RX1.setText(Long.toString(rxBytes1));
        long txBytes1 = (TrafficStats.getUidTxBytes(UID) - mStartTX1) ;
        TX1.setText(Long.toString(txBytes1));
        mHandler1.postDelayed(mRunnable1, 1);

    }
};

public final Runnable mRunnable2 = new Runnable() {
    public void run() {
        TextView RX2 = (TextView)findViewById(R.id.RX2);
        TextView TX2 = (TextView)findViewById(R.id.TX2);

        long rxBytes2 = (TrafficStats.getUidRxBytes(UID) - mStartRX3) ;
        RX2.setText(Long.toString(rxBytes2));
        long txBytes2 = (TrafficStats.getUidTxBytes(UID) - mStartTX3) ;
        TX2.setText(Long.toString(txBytes2));
        mHandler2.postDelayed(mRunnable2, 1);
    }
};

public final Runnable mRunnable3 = new Runnable() {
    public void run() {
        TextView RX1 = (TextView)findViewById(R.id.RX1);
        TextView TX1 = (TextView)findViewById(R.id.TX1);

        TextView RX2 = (TextView)findViewById(R.id.RX2);
        TextView TX2 = (TextView)findViewById(R.id.TX2);

        TextView RX3 = (TextView)findViewById(R.id.RX3);
        TextView TX3 = (TextView)findViewById(R.id.TX3);

        a = Integer.parseInt(RX1.getText().toString());
        b = Integer.parseInt(RX2.getText().toString());

        c = Integer.parseInt(TX1.getText().toString());
        d = Integer.parseInt(TX2.getText().toString());

        e = a - b;

        f=c-d;

        RX3.setText(Integer.toString(e));
        TX3.setText(Integer.toString(f));
        mHandler3.postDelayed(mRunnable3, 1);
    }
};}

0 个答案:

没有答案