gpt4 book ai didi

android - 测量短信发送速度

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:52:22 34 4
gpt4 key购买 nike

我需要测量 Android 设备中短信的发送速度。我正在考虑以下方法。请让我知道它是否正确,或者是否有更好的解决方案。

计算发送 10 条消息所花费的时间,并计算发送每条消息所花费的平均时间。但是这里的速度量在哪里?字符数会增加花费的时间吗?

这是我写的代码。

    SmsManager smsManager = SmsManager.getDefault();
long startTime = System.currentTimeMillis();

smsManager.sendTextMessage("1234567890",null,text,null,null);
smsManager.sendTextMessage("1234567890",null,text,null,null);
smsManager.sendTextMessage("1234567890",null,text,null,null);
smsManager.sendTextMessage("1234567890",null,text,null,null);
smsManager.sendTextMessage("1234567890",null,text,null,null);
smsManager.sendTextMessage("1234567890",null,text,null,null);
smsManager.sendTextMessage("1234567890",null,text,null,null);
smsManager.sendTextMessage("1234567890",null,text,null,null);
smsManager.sendTextMessage("1234567890",null,text,null,null);

long endTime = System.currentTimeMillis();

long result = endTime - startTime;

结果 是 742 毫秒,但我怀疑这是否正确。这意味着每条短信仅需 74 毫秒。

最佳答案

sendTextMessage() 方法的第四个参数是 PendingIntent,它会在发送消息时触发。我们可以将当前系统时间作为附加项附加到 PendingIntentIntent 中,当它触发时,检索该附加项并将其与当前系统时间进行比较。这将使我们能够准确衡量实际发送消息所需的时间。

我们将使用 BroadcastReceiver 来处理 PendingIntent,只需在其 onReceive() 中检索额外发送的时间,并计算从那里的当前时间耗时。

BroadcastReceiver smsSendReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
long sentTime = intent.getLongExtra("sent_time", 0);
long elapsedTime = System.currentTimeMillis() - sentTime;
Toast.makeText(context, elapsedTime + "ms", Toast.LENGTH_SHORT).show();
}
};

我们需要在发送消息之前注册这个 Receiver。在 ActivityService 中:

registerReceiver(smsSendReceiver, new IntentFilter("SMS_SENT"));

在发送消息时,我们会将 PendingIntent 结构“塞进”sendTextMessage() 调用中,这样我们就不会无意中引入任何不必要的延迟在获取当前时间和实际调用电话之间。

SmsManager sm = SmsManager.getDefault();
sm.sendTextMessage("1234567890",
null,
"Testing...",
PendingIntent.getBroadcast(this,
0,
new Intent("SMS_SENT")
.putExtra("sent_time",
System.currentTimeMillis()),
0),
null);

如果需要,这可以运行多次,并从结果中计算出平均值。如果这样做,一定要适本地处理 PendingIntent,以确保为每个广播提供正确的发送时间。在给定的示例中,一种简单的方法是为每次调用使用不同的请求代码 - getBroadcast() 中的第二个参数。

建议您在使用完 Receiver 后注销它,以免您在日志中收到关于 Receiver 泄露的恶意消息。

unregisterReceiver(smsSendReceiver);

关于android - 测量短信发送速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38761208/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com