【问题标题】:Best way to implement a delayed SMS sending after a countdown (Alarm, Chronometer, CountDownTimer)倒计时后实现延迟 SMS 发送的最佳方法(Alarm、Chronometer、CountDownTimer)
【发布时间】:2015-04-10 09:48:53
【问题描述】:

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

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

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

最后我使用了 CountDownTimer,并在 TextView 中显示经过的时间。

这是最好的选择吗?

这里是一个简短的代码:

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

【问题讨论】:

    标签: android android-alarms countdowntimer chronometer


    【解决方案1】:

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

    详情请见this,这发生在我身上。

    【讨论】:

    • 非常感谢。这个项目就像“紧急按钮”应用程序,但我需要向用户提供在他/她不取消倒计时的情况下激活发送短信的可能性。如果用户要执行风险任务/操作(例如在高压下工作)会有所帮助。
    • 好吧@JoséManuelGálvez 这意味着用户在启动其他应用程序后将没有任何机会浏览/使用其他应用程序。这意味着您的应用程序变量不会从内存中释放出来。如果是这种情况,您可以继续。但是广播接收器是首选方法,您也可以取消它。
    猜你喜欢
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多