Android: запуск периодического работника в службе специальных возможностей - PullRequest
0 голосов
/ 01 октября 2019

Мне нужно определить, когда 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 предназначен для задач, требующих гарантии того, что система запустит их, даже если приложение завершится.

Итак, кто-то может объяснить мне,что не так в моем коде? Или, может быть, существует другое решение для этого?

...