Android 延迟短信发送

Android 延迟短信发送,android,timer,sms,delay,postdelayed,Android,Timer,Sms,Delay,Postdelayed,我目前正在尝试编写一个应用程序,向我数据库中的300多个号码发送群发短信 我面临一次性发送的问题,我的应用程序将强制关闭,我只发送了27/308 我正在使用for循环发送SMSE 在进入下一步之前,我是否可以将for循环延迟1-2秒 目前我已经尝试过这段代码,但它只休眠20秒,然后它将一次完成所有步骤,而不是每一步20秒。注释掉我的sendSms方法并使用println()进行测试 任何帮助都将不胜感激 for (i = 0; i < phoneNumbers.length; i++){

我目前正在尝试编写一个应用程序,向我数据库中的300多个号码发送群发短信

我面临一次性发送的问题,我的应用程序将强制关闭,我只发送了27/308

我正在使用for循环发送SMSE

在进入下一步之前,我是否可以将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(i=0;itxtCommand=customIDs[i]+“;“+command+”;&W编写的代码将在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);
    }
  }
void queueMessage(最终字符串[]电话号码,最终整数索引){
if(索引

另一方面,如果您尚未在服务中运行此循环,则应该。

编写的代码将在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);
    }
  }
void queueMessage(最终字符串[]电话号码,最终整数索引){
if(索引

另一方面,如果您尚未在服务中运行此循环,您应该。

崩溃的调用堆栈是什么?崩溃发生时,您可以发布LogCat的输出吗?崩溃的调用堆栈是什么?崩溃发生时,您可以发布LogCat的输出吗?谢谢Mike,因为我不熟悉延迟,现在我了解了延迟的原因有效。延迟对你的两个解决方案都有效。干杯!对于那些计划发送群发短信的人,请取消短信限制!更多信息在此感谢Mike,因为我不熟悉延迟,现在我了解了它的工作原理。延迟对你的两个解决方案都有效。干杯!对于那些计划发送群发短信的人,请取消短信限制!更多信息在这里