有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

共 (1) 个答案

  1. # 1 楼答案

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

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