Expo BackgroundFetch не работает на android, когда приложение закрывается - PullRequest
1 голос
/ 13 февраля 2020

Задача регистрируется, она также работает. Когда в последних приложениях она работает. При удалении она перестает работать!

Expo CLI 3.11.3 информация о среде: Система: ОС: Windows 10 Двоичные файлы: Пряжа : 1.21.0 - C: \ Users \ Steve \ AppData \ Roaming \ npm \ yarn.CMD npm: 6.9.0 - E: \ Program Files \ nodejs \ npm .CMD IDE: Android Studio : Версия 3.5.0.0 AI-191.8026.42.35.5900203

Версия SDK: 36.0.0 Автономное приложение на android 7

Просто чтобы подтвердить, что я был прав, я вошел в фон своих приложений в В настройках телефона я вижу, что приложение находится в фоновом режиме. Как только я удаляю его из недавних приложений, оно также исчезает из фонового процесса. Так что все как я описал, и в этом нет никаких сомнений. Я также использовал :

stopOnTerminate: false,

Но он ничего не делает.

Вот функция, которая регистрирует задачи и все:

import * as BackgroundFetch from 'expo-background-fetch';

import * как TaskManager from ' экспо-проблемно-менеджер "; экспорт asyn c функция registerFetchTask (taskName, jobCallback, интервал) {TaskManager.defineTask (taskName, jobCallback);

const status = await BackgroundFetch.getStatusAsync();
switch (status) {
    case BackgroundFetch.Status.Restricted:
    case BackgroundFetch.Status.Denied:
        console.log("Background execution is disabled");
        return;

    default: {
        console.log("Background execution allowed");

        let tasks = await TaskManager.getRegisteredTasksAsync();
        if (tasks.find(f => f.taskName === taskName) == null) {
            console.log("Registering task");
            await BackgroundFetch.registerTaskAsync(taskName,{
                minimumInterval: 60,
                stopOnTerminate: false,
                startOnBoot: true,
            });

            tasks = await TaskManager.getRegisteredTasksAsync();
            console.log("Registered tasks", tasks);
        } else {
            console.log(`Task ${taskName} already registered, skipping`);
        }

        console.log("Setting interval to", interval);
        await BackgroundFetch.setMinimumIntervalAsync(interval);
    }
}}

Внутри приложения. js Я звоню:

registerFetchTask('wow',()=>{
fetchServer('/test',{});
console.log('WOWWW HIIIIIIIII YGNNNNNN');
},5);

FetchServer будет добавлять вещи в мою базу данных на моем ноутбуке. Так что я могу видеть, выполняет ли приложение задачу, я получаю новые строки в базе данных.

...