如果我将其设置为09:00,它将在哪个范围中运行WorkManager?

时间:2019-04-28 18:12:53

标签: android-workmanager

我需要每天早上09:00执行功能。我了解AlarmManager,但是我想使用WorkManager。此代码将在哪个范围内运行? +-10分钟?有人尝试过吗?我没有任何约束。

1 个答案:

答案 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;

}