我需要每天早上09:00执行功能。我了解AlarmManager,但是我想使用WorkManager。此代码将在哪个范围内运行? +-10分钟?有人尝试过吗?我没有任何约束。
答案 0 :(得分:1)
如果您需要在正好9:00 AM运行工作,则WorkManager可能不是您的最佳选择。
您在WorkManager中设置的周期,对于周期性的Worker,它是一个最小值,但是,如果设备处于打ze模式,则直到下一个执行窗口才会运行您的工作。 鉴于您不能指定一天中的某个时间来运行您的工作,而只能指定一个时间间隔(例如24小时)。工作执行的时间将一天比一天缩短。
因此,就目前而言,普通的PeriodicWorkRequest可能不是您的用例的最佳选择。
另一种方法是使用OneTimeWorkRequest,第二天使用您在Worker中计算的初始数据来安排自己的时间:
public double findTotalSubtotal(String order_id) {
double sum = 0 ;
PreparedStatement ps;
try {
ps = connect.prepareStatement("select sum(subtotal) from order where ORDERID = ?");
ps.setString(1,order_id);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
int c = rs.getInt(1);
sum = sum + c;
}
}catch(Exception ex) {
ex.printStackTrace();
}
return sum;
}