#flutter #service #timer #background
Вопрос:
В моем приложении flutter мне нужно выполнить некоторую фоновую работу. Функция заключается в проверке сохраненных транзакций в локальной базе данных sqlite и отправке их на серверную часть (это делается для обеспечения автономной доступности для пользователей приложений). Этот фоновый процесс должен выполняться только при входе пользователя в систему, поэтому, если приложение завершается пользователем или операционной системой, мои фоновые функции также должны прекратиться, но если приложение выходит из фокуса (в фоновом режиме), моя фоновая служба должна продолжать работать.
Я проверил пакет flutter WorkManager https://pub.dev/packages/workmanager и Фоновые процессы Dart https://flutter.dev/docs/development/packages-and-plugins/background-processes и то и другое-это больше, чем мне нужно, так как они оба предлагают работу в фоновом режиме при завершении работы приложения, что не соответствует моим требованиям.
Также мне нужен доступ к информации о пользователе (например, токены доступа, зарегистрирован ли пользователь и некоторые параметры), которую будет трудно получить, если я буду использовать любую из моделей (поскольку они выполняются в отдельном процессе). Мне нужно было бы сохранить необходимые данные в БД и проверить запуск моей фоновой службы, если пользователь вошел в систему из БД, а также получить необходимые параметры.
Я подумываю об использовании периодического таймера (Timer.periodic), поскольку обратный вызов продолжает выполняться каждые n секунд, даже если приложение не находится на переднем плане, но останавливается после того, как приложение будет убито. Есть ли какая-либо причина, по которой таймер не был бы хорошим способом реализовать то, что мне нужно? Я не знаком с недостатками использования таймера и задавался вопросом, есть ли лучший способ достичь того, чего я хочу.
Комментарии:
1. Используйте таймер в изолированном режиме. Не повлияет на ваш основной процесс
2. Но я пытаюсь избежать использования изоляции, потому что я не могу получить доступ к данным приложения в изоляции, и мне нужно (нужно знать, вошел ли пользователь в систему и нужно ли загружать сертификат из ресурсов, нужно ли выходить из системы пользователя при некоторых условиях ..и т. Д.) Есть ли проблема, если я использую его непосредственно в приложении без изоляции? Влияет ли это на приложение?