即使应用程序被杀死或在后台,如何继续执行方法

时间:2021-01-29 06:12:12

标签: android service android-workmanager

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

executor.shutdown()