Work Manager是一个新的API,我尝试每秒执行一次任务,但是它不起作用。
这是我的工人班
df['t'] = v.where(m1.values).sum(axis=1).astype(int)
df['t1'] = v.where(m2.values).sum(axis=1).astype(int)
print (df)
ID Zone1 CHC1 Value1 Zone2 CHC2 Value2 Zone3 CHC3 Value3 t t1
0 1 R5B 100 10 C2 0 20 R10A 2 5 35 0
1 1 C2 95 20 M2-6 5 6 R5B 7 3 23 6
2 3 C2 40 4 C4 60 6 0 6 0 10 0
3 3 C1 100 8 0 0 0 0 100 0 8 0
4 5 M1-5 10 6 M2-6 86 15 0 0 0 0 21
这就是我叫它的地方。
class TestingWorker : Worker(){
override fun doWork(): Result {
Log.i("CheckWorker","Result here")
return Result.SUCCESS
}
}
答案 0 :(得分:21)
它不起作用是因为两次定期工作请求之间的最小间隔为15分钟,由MIN_PERIODIC_INTERVAL_MILLIS定义。
创建一个PeriodicWorkRequest以每个间隔定期运行一次 期。保证PeriodicWorkRequest只能运行一次 在此间隔内。 间隔Millis必须大于或 等于PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS 。它可能 立即运行,在周期结束时或在此间隔之间的任何时间运行 只要当时满足其他条件即可。
我建议您避免如此频繁地安排工作。最终会消耗更多资源,并最终影响电池寿命。
答案 1 :(得分:1)
WorkManager并非旨在每秒运行一次任务,因为它具有两个选项来构建工作请求,即
PeriodicWorkRequest
-每15分钟运行一次重复的任务,即使我们将时间间隔更改为<15分钟,默认情况下也仅运行15分钟。 OneTimeWorkRequest
-运行一次 WorkManager将使workrequest入队,并分别调用Worker类来运行任务,其中每个worker类将覆盖定义实际任务的doWork()
。
此方法在后台线程中运行,并运行10分钟,之后该工作程序停止。
因此,如果您要安排运行前台服务更好的每秒运行的任务,或者您的运行任务持续时间较短。
如果您想长时间运行后台任务,最好的方法是避免这样做。