这篇博客也是花费了好几天的工作量,从开始的毫无头绪到各种设定被打乱,直到现在的版本,主要是一种逻辑。
博客demo 封装下载地址: 打怪机器人/PowerRkLibrary
项目里面可以直接引用库文件,调用方法直接看底部说明即可
implementation 'com.gitee.shotter_admin:power-rk-library:1.0.9'
下面的可以不用看了,直接看源码就行了,代码比较工整 。
有时候我们程序员遇到问题会去死磕bug 。 这几天就完成了一个逻辑,一个比较复杂的业务逻辑。这个时候如果一步完成的话会比较复杂的话,其实有更多的选择,比如通过两个界面或者3个相同的界面,去处理不同的业务逻辑.
说远了,不扯了,先看一下后台设定的定时开关机效果图.
嗯,效果看上去比较简洁。但是获取的数据对于设备端来说是个噩梦. 系统的形式开关机需要我输入 年月日,时分秒,精确到秒,一眼看过去,全部都是以星期来定义的.,我是这样梳理的,
1: 设备定时开关机是 年月日 时分秒
2 : 服务器的数据的星期
3: 获取当天的日期,星期,以今天为基准,吧数据库所有的数据增加年月日时分秒
4:开机时间,关机时间分别分开存储
5:获取目前的时间戳
6:使用储存的数据比对,比现在大的,最小的一个就是下一个的关机时间
7:比关机时间大的最小的一个就是开机时间.
8:这样就可以获取下一次的开机时间和关机时间
目前已经封装成一个库文件了,这个项目目前已经经过3年的市场洗礼,简单而且稳定,大家已经不需要关注代码本身了,因为逻辑确实比较复杂,
代码已经提交给gitee ,里面标记了 项目的调用方法,具体使用方法,请移步到 gitee .
源码目录: https://gitee.com/shotter/power-rk-library
# PowerRkLibrary
#### 使用说明
0:判断当前开关机时间
CheckTimeRunnable runnable = new CheckTimeRunnable(getApplication(), new OnResultListener() {
@Override
public void jujleCurrentIsShutDownTime(boolean isShutDown) {
if (isShutDown) {
//当前是开机时间
} else {
//当前是关机时间
}
}
});
new Thread(runnable).start();
1:日志操作类
PowerDbManager powerDbManager = PowerDbManager.getInstance(OrderActivity.this);
1.1 清空数据
powerDbManager.clearAllTimeLogDb();
1.2 查询日志操作类
List<PowerLogEntity> borOrders = powerDbManager.getDbLogList();
2:定时开关机操作数据库以及设置方法
2.1 增加数据库
TimeLocalEntity timeLocalEntity = new TimeLocalEntity(id, onTime, offTime, "true", "true", "true", "true", "true", "true", "true");
boolean isSave = powerDbManager.addTimerDb(timeLocalEntity);
2.2:设置系统定时开关机
PowerOnOffUtil powerOnOffUtil = new PowerOnOffUtil(OrderActivity.this);
powerOnOffUtil.changePowerOnOffByWorkModel(powerDbManager);
2.3:修改数据库
TimeLocalEntity timeNew = new TimeLocalEntity("1606189497543", "9:30", "16:00", "true", "true", "true", "true", "true", "true", "true");
powerDbManager.updateTimeById(timeNew);
2.4:删除某一项数据
String delId = "1606188290870";
powerDbManager.delTimerById(delId);
2.5:查询全部数据库
List<TimeLocalEntity> borOrders = powerDbManager.queryTimerList();
2.6:获取某一项数据
String timeId ="123456";
TimeLocalEntity timeEntity = powerDbManager.getTimeById(timeId)
3:获取下一次的开关机时间
String onTime = PowerOnOffUtil.getPowerOnTime(PowerOnOffLocalActivity.this);
String offTime = PowerOnOffUtil.getPowerOffTime(PowerOnOffLocalActivity.this);
/***
*
* @param context
* @param isPowerOnOffTime
* true 开机时间
* false 关机时间
* @return
*/
String time = PowerOnOffUtil.getNextPowerTimeShow(PowerOnOffLocalActivity.this,boolean isPowerOnOff)