Android 在倒计时后实现延迟短信发送的最佳方式(闹钟、计时器、倒计时器)

Android 在倒计时后实现延迟短信发送的最佳方式(闹钟、计时器、倒计时器),android,android-alarms,countdowntimer,chronometer,Android,Android Alarms,Countdowntimer,Chronometer,我需要在未来的时间(即5分钟内)发送短信,并在UI中以00:00格式显示剩余时间 我的第一个选择是使用android alarm,但我不知道如何在布局中显示倒计时 接下来,我尝试使用一个计时器,并使用对象的视图,但时间总是到了,所以我需要做很多数学运算来刷新视图 最后,我使用了一个倒计时,并在文本视图中显示了经过的时间 那是最好的选择 下面是一段简短的代码: public void startCountDown(View v) { if (!activedCountDown) {

我需要在未来的时间(即5分钟内)发送短信,并在UI中以00:00格式显示剩余时间

我的第一个选择是使用android alarm,但我不知道如何在布局中显示倒计时

接下来,我尝试使用一个计时器,并使用对象的视图,但时间总是到了,所以我需要做很多数学运算来刷新视图

最后,我使用了一个倒计时,并在文本视图中显示了经过的时间

那是最好的选择

下面是一段简短的代码:

public void startCountDown(View v) {

    if (!activedCountDown) {

        activedCountDown = true;

        final TextView mTextField = (TextView) findViewById(R.id.mTextField);

        EditText text = (EditText) findViewById(R.id.etMinutos);

        String mins = text.getEditableText().toString();

        futureTime = Integer.parseInt(mins) * 60000;

        isTheFinalCountDown = new CountDownTimer(futureTime, interval) {

            @Override
            public void onTick(long millisUntilFinished) {

                if (millisUntilFinished  < 60000) {
                    mTextField.setText("00:" + millisUntilFinished / 1000);
                } else {
                    //TODO parse the textfield to show minutes and seconds
                }

            }

            @Override
            public void onFinish() {
                //TODO: launch SMS
                mTextField.setText("Send SMS now");
                activedCountDown = false;
            }
        }.start();
    }
}
public void startCountDown(视图五){
如果(!activedCountDown){
activedCountDown=true;
final TextView mTextField=(TextView)findviewbyd(R.id.mTextField);
EditText text=(EditText)findViewById(R.id.etMinutos);
String mins=text.getEditableText().toString();
未来时间=整数.parseInt(分钟)*60000;
isTheFinalCountDown=新的倒计时(未来时间,间隔){
@凌驾
公共void onTick(长毫秒未完成){
如果(毫秒小于60000){
mTextField.setText(“00:+millisuntillfinished/1000);
}否则{
//TODO解析文本字段以显示分钟和秒
}
}
@凌驾
公共无效onFinish(){
//TODO:启动SMS
mTextField.setText(“立即发送短信”);
activedCountDown=false;
}
}.start();
}
}

要显示用户剩余时间,您可以使用倒计时
但用于发送短信
我强烈建议您不要使用它,您必须使用报警/广播接收器,因为您的活动变量可能会从内存中释放出来,因为如果其他应用程序正在运行,Android操作系统需要内存


详情请参见,这件事发生在我身上。

非常感谢。这个项目就像“恐慌按钮”应用程序,但我需要向用户提供的可能性,以激活发送短信的时间,如果他/她没有取消倒计时。如果用户打算执行一项风险任务/操作(例如在高压下工作),这会很有帮助。嗯@JoséManuelGálvez,这意味着用户在启动其他应用程序后将没有机会浏览/使用其他应用程序。这意味着您的应用程序变量不会从内存中释放。如果是这样,你可以继续。但广播接收机是首选方法,您也可以取消它。