延迟短信发送ANDROID

我目前正在尝试编写一个应用程序,将大量短信发送到我在数据库中的300多个号码。 我面临的问题是一次性发送它们我的应用程序将强制关闭,我只能设置发送像27/308。 我正在使用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();
            }
    
已邀请:
写入的代码会将所有内容排队,以便在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);
    }
  }
顺便说一句,如果您还没有在服务中运行此循环,那么您应该这样做。     

要回复问题请先登录注册