我正在尝试使用WorkManager周期性地运行服务,即使应用程序已被杀死或在后台运行。
下面是我的RequestService类:
这是主要活动代码:-
问题在于如果应用程序被杀死或在后台运行,则工作管理器停止工作。 我正在三星设备上测试此问题,其Android版本为Pie。
附言:如果应用程序处于打开状态,则在15分钟后我会持续收到通知....但是一旦我关闭应用程序....它就停止工作了....没有更多的通知。
下面是我的RequestService类:
public class RequestService extends Worker {
public RequestService(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
displayNotification("MY Worker", "Background work Started");
Log.i("BackJob","Running");
return Result.SUCCESS;
}
private void displayNotification(String title, String task){
NotificationManager notificationManager = (NotificationManager)getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel("MyApp","My Notifications",
NotificationManager.IMPORTANCE_HIGH);
notificationManager.createNotificationChannel(channel);
}
NotificationCompat.Builder notification = new NotificationCompat.Builder(getApplicationContext(), "My Notifications").
setContentTitle(title).setContentText(task)
.setSmallIcon(R.mipmap.ic_launcher);
notificationManager.notify(130, notification.build());
}}
这是主要活动代码:-
final PeriodicWorkRequest WorkReq = new PeriodicWorkRequest.Builder(RequestService.class,15,TimeUnit.MINUTES).build();
WorkManager.getInstance().enqueue(WorkReq);
问题在于如果应用程序被杀死或在后台运行,则工作管理器停止工作。 我正在三星设备上测试此问题,其Android版本为Pie。
附言:如果应用程序处于打开状态,则在15分钟后我会持续收到通知....但是一旦我关闭应用程序....它就停止工作了....没有更多的通知。
makeStatusNotification
函数,解决了相同的问题:https://github.com/googlecodelabs/android-workmanager/blob/ec9e065086ce5912f3a3ae7cbd039ea6da086531/app/src/main/java/com/example/background/workers/WorkerUtils.java#L60 - pfmaggi