【问题标题】:How to work a counter that ends a certain day and restarts the count on another day (CountDown)?如何使用在某一天结束并在另一天重新开始计数的计数器(倒计时)?
【发布时间】:2020-08-16 10:09:47
【问题描述】:

你好吗 我喜欢在每年的每个星期日上午 10:00:00 举办活动 一次有效。

示例:倒计时在周六结束,周日 10:00:00,i 在十点钟自动重启(间隔为一天在此间隔内)我想在礼物关门后打开礼物)

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 8);
    cal.set(Calendar.MINUTE, 19);
    cal.set(Calendar.SECOND, 20);
    if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {


        if (cal.get(Calendar.HOUR_OF_DAY) == 8) {


            Toast.makeText(getApplicationContext(), "synday is 8 oclock", Toast.LENGTH_SHORT).show();


            if (cal.get(Calendar.MINUTE) == 19) {

                Toast.makeText(getApplicationContext(), "synday is min", Toast.LENGTH_SHORT).show();


               resetTimer();


            } else {
                Toast.makeText(getApplicationContext(), "synday not  min", Toast.LENGTH_SHORT).show();

            }


        } else {

            Toast.makeText(getApplicationContext(), "synday no 8", Toast.LENGTH_SHORT).show();

        }
    } else {

        Toast.makeText(getApplicationContext(), "no sunday", Toast.LENGTH_SHORT).show();


    }


}

【问题讨论】:

    标签: java android android-studio countdown


    【解决方案1】:

    如果您想安排每周六重置计时器,您可以使用 Android 的 WorkManager。 它支持每个 API 级别,因此您应该没有任何问题。 这是文档:https://developer.android.com/topic/libraries/architecture/workmanager

    归结为:

    导入这些依赖项

    implementation "androidx.work:work-runtime:2.4.0"
    

    定义你想做什么:

    public class TimerResetWorker extends Worker {
       public TimerResetWorker(@NonNull Context context,@NonNull WorkerParameters params) {
           super(context, params);
       }
    
       @Override
       public Result doWork() {
    
         resetTimer(); //do what you want to do
    
         return Result.success(); //you have Result.failure() / retry() in case something goes wrong
       }
    }
    

    然后每 7 天安排一次工作(从星期六开始):

     PeriodicWorkRequest mWork = new PeriodicWorkRequest.Builder(TimerResetWorker.class, 7, TimeUnit.DAYS).build();
     WorkManager.getInstance().enqueue(mWork);
    

    【讨论】:

    • 如何使用obj PeriodicWorkRequest ????我应该把它放在哪里?
    • 第二行写的……你用WorkManager.getInstance().enqueue(mWork);安排它,你可以把请求放在任何你想要的地方,我建议 MainActivity 或者如果你有 Fragments,任何相关的。
    • 如何将其放入函数中?
    • 私人无效 resetTimer() { mTimeLeftInMillis = START_TIME_IN_MILLIS; updateCountDownText();开始定时器(); } 如何链接这个函数
    • 内部 doWork() :/
    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 2013-06-27
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    相关资源
    最近更新 更多