2013-03-19 98 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

該代碼可以工作,有一些變化。保持該處理程序中的變量類成員(而不是將其丟棄),並且當按下按鈕從處理程序除去任何未決的消息。

只要手機沒有進入睡眠狀態,這將工作。如果您的超時時間很長,並且手機在需要處理時可能會睡着,您需要設置鬧鐘。像這樣的處理程序適用於想要延遲幾秒鐘,而不是幾分鐘或更長的時間。