有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中循环周期的安卓延迟

我正在构建一个短信应用程序,其中包含一系列我想发送到的电话号码。当我按下应用程序中的“发送”按钮时,我键入的消息将发送到该数组中的所有数字

我使用for循环遍历这些数字,并向每个数字发送相同的消息:

for (i=0; i<names.length; i++) {
    phoneNo = names[i][3];
    sendMessage(phoneNo, message);
}

private void sendMessage(String phoneNo, String message) {
    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo, null, message, null, null);
        Toast.makeText(getApplicationContext(), "SMS sent", Toast.LENGTH_LONG).show();
    }
    catch (Exception e) {
        Toast.makeText(getApplicationContext(), "SMS failed. Please try again!", Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }
}

这非常有效,但现在,我想在发送每条消息之间引入一秒钟的延迟,所以我修改了for循环,如下所示:

Handler handler1 = new Handler();
for (i=0; i<names.length; i++) {
    handler1.postDelayed(new Runnable() {
        @Override
        public void run() {
            phoneNo = names[i][3];
            sendMessage(phoneNo, message);
        }
    }, 1000);
}

这在语法上是正确的,但每当我现在试图发送消息时,我的应用程序就会崩溃。有人能指出我做错了什么吗

非常感谢:-)


共 (0) 个答案