首页 > 解决方案 > 即使应用程序被杀死或在后台,如何连续执行方法

问题描述

即使应用程序不在前台,我也想继续执行一个方法。为此,我使用了 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();
}}

我怎样才能做到这一点?哪个是最好的方法?

标签: androidserviceandroid-workmanager

解决方案


对于如此短的间隔(10 秒)WorkManagerAlarmManager不适合。使用Java 执行器

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
        // Do work
    }
}, 0, 10, TimeUnit.SECONDS);

完成后不要忘记关闭执行程序:

executor.shutdown()

推荐阅读