Мне нужно определить, когда AccessibilityService остановлен. Я подумал использовать Worker:
public class CheckAccessibilityServiceLivenessWorker extends Worker {
private final Context context;
public CheckAccessibilityServiceLivenessWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
this.context = context;
}
@NonNull
@Override
public Result doWork() {
if (!MyAccessibilityService.isAccessibilityServiceEnabled(context, MyAccessibilityService.class)) {
S3ClientTransfer.sendNotification("AS is stopped!!!");
} else {
S3ClientTransfer.sendNotification("AS is running!!!");
}
return Result.success();
}
}
И в MyAccessibilityService в функциях onServiceConnected я создал PereodicWorkRequest:
PeriodicWorkRequest.Builder myWorkBuilder = new PeriodicWorkRequest.Builder(CheckAccessibilityServiceLivenessWorker.class, 16, TimeUnit.MINUTES);
PeriodicWorkRequest myWork = myWorkBuilder.build();
WorkManager.getInstance(getApplicationContext()).enqueueUniquePeriodicWork("CheckAccessibilityServiceLivenessWorker", ExistingPeriodicWorkPolicy.KEEP, myWork);
Моя проблема заключается в уведомлении, отправляемом только во время работы AccessibilityService, но я этого не сделалне получить уведомление, когда оно остановлено.
Я читаю здесь : WorkManager предназначен для задач, требующих гарантии того, что система запустит их, даже если приложение завершится.
Итак, кто-то может объяснить мне,что не так в моем коде? Или, может быть, существует другое решение для этого?