WorkManager выполняется каждый раз, когда я устанавливаю (запускаю) приложение - PullRequest
0 голосов
/ 10 июня 2019

Я создал двух рабочих через WorkManager .Он устанавливается на каждые 30 минут после успешного входа в систему.

После входа в систему он успешно запускается и работает, как и ожидалось.

MyWorker.java

public class MyWorker extends Worker {
    private Context mContext;

    public MyWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
        mContext = context;
    }

    @NonNull
    @Override
    public Result doWork() {
        Log.d(TAG, "doWork: Done");

        return Result.success();
    }
}

Запуск работника при успешном входе в систему.

PeriodicWorkRequest periodicWork = new PeriodicWorkRequest.Builder(MyWorker.class, 30, TimeUnit.MINUTES)
            .addTag("Location")
            .build();

WorkManager.getInstance().enqueueUniquePeriodicWork("Location", ExistingPeriodicWorkPolicy.REPLACE, periodicWork);

Проблема:

Когда я запускаю свое приложение, оно снова выполняется,Это происходит каждый раз, когда я устанавливаю (запускаю) свое приложение.

Есть ли какое-то решение для этого?

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Это произойдет, если ваш рабочий персонал выполняет периодическое задание. Если вы можете добавить проверку с помощью флага в sharedpreference или что-то, чтобы проверить, если процесс уже начался. В противном случае вам придется удалить и запустить его

0 голосов
/ 10 июня 2019

Если вы используете Android Studio для установки и запуска своего приложения, это классифицируется как принудительная остановка.

Если ваше приложение использует PeriodicWork, нам нужно перенести всю работу.Поэтому он будет запускаться каждый раз, когда Studio принудительно останавливает процесс приложения.

...