终止应用程序后我的工作管理器不工作
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 并检查。
请检查
我得到了答案,非常感谢。实际上 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 分钟!
我的 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 并检查。 请检查
我得到了答案,非常感谢。实际上 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 分钟!