Java 创建一个重置它的布尔值';午夜有多少钱?
有没有一种简单的方法可以创建一个布尔值,在午夜将其值重置为false 我想在使用if语句时Java 创建一个重置它的布尔值';午夜有多少钱?,java,android,boolean,Java,Android,Boolean,有没有一种简单的方法可以创建一个布尔值,在午夜将其值重置为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, 5
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和共享首选项来实现这一点,但我想知道是否有一种更简单的方法我没有想到。您可以简单地为此创建一种“午夜重置布尔”类。每次加载活动时获取值,如果为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;
}
}
package com.bemoty.booleanstest;
导入java.util.Calendar;
导入java.util.Date;
公共课午夜{
私有布尔值=真;
专用长lastChanged=0L;
公共午夜布尔值(布尔起始值){
这个.setValue(startValue);
}
公共void设置值(布尔值){
这个值=值;
this.lastChanged=System.currentTimeMillis();
}
公共布尔getValue(){
Calendar lastChangedCalendar=Calendar.getInstance();
Calendar timeNowCalendar=Calendar.getInstance();
lastChangedCalendar.setTime(新日期(lastChanged));
如果((lastChangedCalendar.get(Calendar.DAY\u OF\u MONTH)-timeNowCalendar.get(Calendar.DAY\u OF\u MONTH))<0){
此.setValue(false);
}
返回此.value;
}
}
为什么需要使用intentService或作业调度器来执行此类任务?如果用户没有单击按钮,我希望跟踪。单击此按钮可将布尔值更改为true。在一天结束时,如果布尔值为false(按钮未被单击),我将向错过的单击进度条添加一个增量。如果它返回true,我将向单击进度条添加一个增量。这就是为什么我需要布尔值在午夜将自身返回false,以便第二天代码重复自身。