终止应用程序后我的工作管理器不工作

My work manager is not working after kill the application

我的 android 应用程序在我终止应用程序时没有 运行 workmanager。 当应用程序进程终止时,workmanager 停止工作。

我的代码是:

PeriodicWorkRequest workRequest =
                new PeriodicWorkRequest.Builder(UploadWorker.class, 1, TimeUnit.MINUTES)
                        .setConstraints(constraints)
                        .build();
        WorkManager.getInstance().enqueue(workRequest);

我也申请了 Jobscheduler 但是当应用程序在进程中仍然存在时程序正在运行。但是当应用程序关闭时,workmanager 不工作。我设置的周期时间是1 min.

PeriodicWork 的最小间隔为 15 分钟。 您能否将间隔更改为 15 并检查。 请检查

https://medium.com/@yonatanvlevin/the-minimum-interval-for-periodicwork-is-15-minutes-same-as-jobscheduler-periodic-job-eb2d63716d1f

我得到了答案,非常感谢。实际上 WorkManager 与 Jobschduler 不同。在奥利奥更高版本的后台服务限制后,后台限制服务推出了3-4种方法。 那些是: Firebase FCM 作业调度程序 工作管理器

但这里的服务是不同的。如果您想关闭或终止应用程序,则需要提及警报管理器并设置时间。

因此您需要 1 个 Maninactivity,您可以在其中提及您的 WorkManager,然后您还需要实施 Alarm Manager。 警报管理器的代码是:

// Alarm Manager
        int i=30;
        Intent intent = new Intent(this, MyBroadcastReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                this.getApplicationContext(), 234324243, intent, 0);
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        assert alarmManager != null;
        alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ (i * 1000), pendingIntent);

现在您可以运行后台服务。 记住时间至少为 30 秒,您也可以每 2 秒 运行,但如果您在 Playstore 上有应用程序并且应用程序目标 SDK 是 oreo 或超过 oreo,那么 playstore 将根据文档的政策禁用您的应用程序。如果您需要更多信息,请发表评论,我会写更多相关信息。我现在已经成功获得有关 JobSchduler、WorkManager 的信息。

workmanager 在应用程序进程终止时不会停止工作,您将周期设置为 1 分钟,最小为 15 分钟,因此 workmanager 每 15 分钟而不是 1 分钟执行您指定的工作并忽略那 1 分钟!