WorkManager делает паузу, если «телефон не подключен к отладчику» && «экран заблокирован» - PullRequest
0 голосов
/ 03 ноября 2018

У меня был приоритетный сервис для кодирования мультимедиа, который иногда выполнялся часами. В этом процессе, регистрируя значение прогресса, я заметил, что все останавливалось, если это условие достигает:

если (phone not connected to adb && screen is locked)

Поэтому я решил попробовать этот новый WorkManager.

Но проблема сохраняется. Я схватил WorkManager пример проекта и попытался просто записать некоторое значение подсчета, которое добавлено ниже. Но проблема все еще там. Я даже попробовал с setRequiresDeviceIdle(true/false) безуспешно.

Работает на Honor 8 Lite API 24

работник

public class WorkerTest extends Worker {

int a = 0;

public WorkerTest(@NonNull Context context, @NonNull WorkerParameters workerParams) {
    super(context, workerParams);
}

@Override
public Result doWork() {
    try {
        Observable.interval(1, TimeUnit.SECONDS).doOnNext(new Consumer<Long>() {
                    @Override
                    public void accept(Long n){
                        Log.d("WorkerTest:doWork", String.valueOf(a++));
                    }
                }
        ).subscribe();
        return Result.SUCCESS;

    } catch (Exception e) {
        e.printStackTrace();
        return Result.FAILURE;
    }

}

}

CallerClass

public class Main extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        OneTimeWorkRequest blurRequest = new OneTimeWorkRequest.Builder(WorkerTest.class)
        .build();
        WorkManager.getInstance().enqueue(blurRequest);

    }
}
...