即使应用程序不在前台,我也想继续执行一个方法。为此,我使用了 WorkManager。但问题是最小时间延迟是 15 分钟,我们不能减少这个值。下面是代码。
final PeriodicWorkRequest periodicWorkRequest
= new PeriodicWorkRequest.Builder(MyWorker.class, 10, TimeUnit.SECONDS)
.build();
WorkManager.getInstance().enqueue(periodicWorkRequest);
public class MyWorker extends Worker {
public MyWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
//Do work
return Result.success();
}}
我怎样才能做到这一点?哪种方法最好?
答案 0 :(得分:0)
对于如此短的间隔(10 秒),WorkManager
或 AlarmManager
不适合。使用Java executors:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// Do work
}
}, 0, 10, TimeUnit.SECONDS);
完成后不要忘记关闭执行器:
executor.shutdown()