我正在创建一个 android 应用程序来在后台运行我的代码。我很清楚 Android Oreo 对后台服务引入的限制,这就是为什么我使用 WorkManager API 来安排执行任务的原因。我正在使用 Android API 24 (Nougat) 在 Mi Max 设备上测试我的代码,并手动启用自动启动,以便 MIUI 允许应用程序在后台运行,但问题是,WorkManager 在应用程序第一次启动时触发但是之后,它不起作用。下面是我用于定期工作请求和工作本身的代码。
PeriodicWorkRequest 调用:
PeriodicWorkRequest work = new PeriodicWorkRequest.Builder(ClassExtendingWorker.class, 15, TimeUnit.MINUTES)
.setConstraints(Constraints.NONE)
.build();
WorkManager.getInstance().enqueue(work);
类ExtendingWorker:
public Result doWork() {
/*--- SHOWING NOTIFICATION AS AN EXAMPLE TASK TO BE EXECUTED ---*/
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(), "")
.setSmallIcon(R.drawable.common_google_signin_btn_icon_light)
.setContentTitle("TestApp")
.setContentText("Code executed")
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(getApplicationContext());
notificationManager.notify(1234, mBuilder.build());
return Result.SUCCESS;
}