是我出现的时候了^^
好吧,我对编程有点陌生,但我成长很快^^
我希望,我的英语不会让你头疼'-'
所以我在这里谈论“TrafficStats”功能,特别是关于 Rx。
事实上,实际上我正在开发一个 android 应用程序,在此我展示了有关此应用程序的数据消耗。
我正在使用“getUidRxBytes”和“getUidTxBytes”所以如果我在android文档中理解得很好,Tx被传输所以它是上传(UL),Rx被接收所以它是下载(DL),对吧?所以数据消耗应该是两者的相加吧(UL + DL =数据消耗)???
所以我遇到了一个问题,在启动我的应用程序之前,这是我对这个应用程序的数据消耗(在数据使用选项中):
如您所见,我使用了 588 MB
我启动我的应用程序,我在这个应用程序中启动一个视频,从dailymotion(调用它的sdk),多次消耗足够的数据。
看来我在 Tx 中使用了 59.25 MB,在 Rx 中使用了 122.08 MB。(所以应该是 181.33MB)
当我回顾这个应用程序的数据消耗时(像这样):
(不允许发布超过 2 个链接,所以相信我:x)
它显示,实际上存在差异(高达 650MB),因此差异为 62 MB
所以它似乎只与数据 Tx 匹配(有一点错误)(所以 UL)
我正在使用第三方“第三方”(我不能告诉你)谁给了我应用程序中使用的数据,它也只与 Tx 匹配!
--> 我的问题: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);
}
};}