Как отправить данные на главный изолятор из изолята workmananger?
Моя проблема в том, что Flutter Hive нельзя открыть из нескольких изолятов. Поэтому я хочу, чтобы данные, полученные в задаче workmananger, были отправлены в главный изолятор, где открывается ящик улья, и изменили его там, чтобы избежать его повреждения. Я должен учитывать, когда приложение живо, а когда нет => например, когда приложение не живо, я редактирую файл куста напрямую, поскольку он будет открыт только в изолированном рабочем месте, тогда как если приложение не живо, я отправить данные в главный изолятор и отредактировать файл улья. Моя проблема в том, что я не знаю, как отслеживать жизненный цикл в рамках задачи workmanager, и я не знаю, как отправить данные в основной изолятор. Какие-либо обходные пути или решения проблемы или как кодировать вышеперечисленное? Заранее спасибо.
1 ответ
После некоторых исследований решение выглядит следующим образом:
Сначала вы регистрируете порт при инициализации основного изолята следующим образом:
void listenToUpdatesFromWorkManager(String name) { var port = ReceivePort(); IsolateNameServer.registerPortWithName(port.sendPort, name); }
Вы даете ему уникальное имя, чтобы отличить его от любых других открытых изолятов, например:
SendPort sendPort = IsolateNameServer.lookupPortByName(name);