2013-03-19 45 views
0

我是一名初学者程序员,如果没有按下按钮,我会在一段时间后发送短信。我试图通过处理程序要做到这一点,但我知道它在那里我是个想说明的是,如果不按该按钮是我的问题在于...... 20秒后使用处理程序在一段时间后发送短信?

Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 

     public void run() { 

      if (TakenButton.isActivated() == false) { 
       sendSMS(number, "Medication Not Taken"); 

      } 
     } 
    }, 20000); 

消息发送,但即使按钮被按下也会发送。如果有人能解释我可以说明按钮是否被按下,如果我将它放在正确的位置,我会非常感激。

我现在已经改成了这个,现在我没有得到消息说药物不采取,采取工作但是我的药物???

public void onClick(View v) { 
      sendSMS(number, "Medication Taken"); 
      isActivated = true; 
     } 
    }); 

    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 


     public void run() { 

      if(isActivated = false){ 
       sendsms(); 
      } 

     } 
     private void sendsms() { 
      sendSMS(number, "Medication Not Taken"); 

     } 
    }, 10000); 

回答

0

该代码可以工作,有一些变化。保持该处理程序中的变量类成员(而不是将其丢弃),并且当按下按钮从处理程序除去任何未决的消息。

只要手机没有进入睡眠状态,这将工作。如果您的超时时间很长,并且手机在需要处理时可能会睡着,您需要设置闹钟。像这样的处理程序适用于想要延迟几秒钟,而不是几分钟或更长的时间。