Java 使用处理程序在一段时间后发送sms?

Java 使用处理程序在一段时间后发送sms?,java,android,sms,handler,Java,Android,Sms,Handler,我是一个初学者程序员,我试图发送一段时间后,如果一个按钮没有按下短信。我正试图通过一个处理程序来实现这一点,但我知道,我想说的是,如果没有按下按钮,我的问题就出在这里 Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { if (TakenButton.isActivated() == false) {

我是一个初学者程序员,我试图发送一段时间后,如果一个按钮没有按下短信。我正试图通过一个处理程序来实现这一点,但我知道,我想说的是,如果没有按下按钮,我的问题就出在这里

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

        public void run() {

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

            }
        }
    }, 20000);
消息在20秒后发送,但即使按下按钮也会发送。如果有人能解释一下,如果我没有按下按钮,或者我把它放在了正确的位置,我会非常感激的

我现在把它改成了这个,我现在没有收到任何信息说我没有服用药物,但是我服用的药物起作用了

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);

该代码可以工作,但需要进行一些更改。将处理程序变量保留在类成员中(而不是将其丢弃),并在按下按钮时从处理程序中删除任何挂起的消息

只要手机不睡觉,这项功能就可以正常工作。如果您的超时时间很长,并且手机在需要处理时可能处于休眠状态,则需要设置闹钟。这样的处理程序适用于需要延迟几秒钟,而不是几分钟或更长时间的情况