延迟短信发送ANDROID

时间:2011-02-07 18:18:49

标签: android timer sms delay postdelayed

我目前正在尝试对应用进行编码,以便向我的数据库中的300多个号码发送群发短信。

我面临着一次性发送所有内容的问题我的应用程序将强制关闭,我只能像27/308一样发送。

我正在使用for循环发送我的短信。

这是否可以解决这个问题,我可以在进行下一步之前延迟我的for循环1-2秒?

目前我已经尝试过这段代码,但它只能睡20秒,然后它会一次完成所有步骤而不是每步20秒。注释掉我的sendSms方法并使用println();

进行测试

非常感谢任何帮助。

for (i = 0; i < phoneNumbers.length; i++){
                txtCommand = customIDs[i] + ";" + command + ";&W<";
                if (phoneNumbers[i].length()>0 && txtCommand.length()>0)  {
                    final String Messages = "Phone Number:" + phoneNumbers[i] + " " + "Message:" + txtCommand;
                    myHandler.postDelayed(new Runnable() { 
                        public void run() { 
                            System.out.println(Messages);
                            //sendSMS(phoneNumbers[i], txtCommand);    
                   } 
           }, 20000);
                    }
                else
                    Toast.makeText(getBaseContext(), 
                        "Please enter both phone number and message.", 
                        Toast.LENGTH_SHORT).show();
            }

1 个答案:

答案 0 :(得分:0)

写入的代码会将所有内容排队,以便在for循环后20秒运行。但是你想要的是每个任务排队等待在前一个任务之后运行20秒。

您可以尝试将延迟乘以索引:

myHandler.postDelayed(
    ...
, (i + 1) * 20000);

或者,你可以递归地重写你的循环:

void queueMessage(final String[] phoneNumber, final int index) {
    if (index < phoneNumber.length) {
      // TODO do your validation here
      myHandler.postDelayed(new Runnable() {
          public void run() {
            // TODO do your work here
            queueMessage(phoneNumber, index + 1);
          }
        }, 20000);
    }
  }

顺便说一句,如果你还没有在服务中运行这个循环,你应该。