0

私は初心者のプログラマーで、ボタンが押されない場合、一定時間後に 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);
4

1 に答える 1

0

THatコードは、いくつかの変更を加えて機能します。ハンドラー変数を(破棄するのではなく)クラスメンバーに保持し、ボタンを押すと、ハンドラーから保留中のメッセージをすべて削除します。

これは、電話がスリープ状態にならない限り機能します。タイムアウトが長く、処理が必要なときに電話がスリープ状態になっている可能性がある場合は、アラームを設定する必要があります。このようなハンドラーは、数分以上ではなく、数秒遅らせたい場合に適しています。

于 2013-03-19T15:59:13.703 に答える