#react-native #expo #scheduler
#react-native #expo #планировщик
Вопрос:
Мне нужно извлекать данные из api и обновлять в базе данных SQLite каждый час (например, резервное копирование и просмотр в автономном режиме).
Я пробовал TaskManager с BackgroundFetch для запуска задачи в фоновом режиме, но он запускается только тогда, когда приложение свернуто, а не когда приложение завершено.
Существующий код
import * as BackgroundFetch from "expo-background-fetch";
import * as TaskManager from "expo-task-manager";
export async function registerTask() {
TaskManager.defineTask(TASKNAME,taskFunction);
const status = await BackgroundFetch.getStatusAsync();
switch (status) {
case BackgroundFetch.Status.Restricted:
case BackgroundFetch.Status.Denied:
console.log("Background execution is disabled");
return;
default: {
console.debug("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: INTERVAL,
startOnBoot : true,
stopOnTerminate : false
});
tasks = await TaskManager.getRegisteredTasksAsync();
console.debug("Registered tasks", tasks);
} else {
console.log(`Task ${TASKNAME} already registered, skipping`);
}
// console.log("Setting interval to", INTERVAL);
// await BackgroundFetch.setMinimumIntervalAsync(INTERVAL);
}
}
}
В App.js
registerTask();
Мне действительно нужно что-то для работы как на переднем плане, так и на заднем плане, а также при закрытии приложения.
Заранее спасибо.
Примечание: требуется решение, совместимое с Expo