是否有一种简单的方法可以创建一个布尔值,将其值在午夜重置为false?
我想使用if语句,例如
Calendar now = Calendar.getInstance();
Calendar midnight = Calendar.getInstance();
midnight.add(Calendar.HOUR_OF_DAY, 23);
midnight.add(Calendar.MINUTE,59);
midnight.add(Calendar.SECOND, 59);
if (now == midnight){
boolean = false;
}
但是它仅在活动正在运行并且即使应用程序关闭时我也需要它才能运行
我知道我可以使用 AlarmManager 和 Shared Preferences 来做到这一点,但我想知道是否有一种更明显的简便方法,我并未考虑过
答案 0 :(得分:0)
您可以为此简单地创建一种“午夜重置布尔值”类。每次加载Activity时获取该值,如果计数器为false,则将其递增1。
package com.bemoty.booleantest;
import java.util.Calendar;
import java.util.Date;
public class MidnightBoolean {
private boolean value = true;
private long lastChanged = 0L;
public MidnightBoolean(boolean startValue) {
this.setValue(startValue);
}
public void setValue(boolean value) {
this.value = value;
this.lastChanged = System.currentTimeMillis();
}
public boolean getValue() {
Calendar lastChangedCalendar = Calendar.getInstance();
Calendar timeNowCalendar = Calendar.getInstance();
lastChangedCalendar.setTime(new Date(lastChanged));
if ((lastChangedCalendar.get(Calendar.DAY_OF_MONTH) - timeNowCalendar.get(Calendar.DAY_OF_MONTH)) < 0) {
this.setValue(false);
}
return this.value;
}
}