如何从workmananger的isolate发送数据到主isolate?

ana*_*shi 6 dart flutter flutter-workmanager flutter-hive

我的问题是 flutter Hive 无法从多个隔离区打开。因此,我希望将 workmananger 任务中获取的数据发送到打开配置单元框的主隔离区,并在那里对其进行修改以避免损坏它。我应该考虑应用程序何时处于活动状态以及何时不存在 => 例如,当应用程序不处于活动状态时,我直接编辑配置单元文件,因为它只会在 workmanager 隔离中打开,而如果应用程序不处于活动状态,我会直接编辑配置单元文件将数据发送到主隔离并编辑配置单元文件。我的问题是,我不知道如何跟踪工作管理器任务中的生命周期,也不知道如何将数据发送到主隔离。该问题有任何解决方法或解决方案,或者如何对上述内容进行编码?

ana*_*shi 2

经过一番研究,解决方案如下:

首先,在主隔离初始化时注册一个端口,如下所示:

void listenToUpdatesFromWorkManager(String name) { var port = ReceivePort(); IsolateNameServer.registerPortWithName(port.sendPort, name); }

您给它一个唯一的名称,以便将其与任何其他打开的隔离区区分开来,如下所示:

SendPort sendPort = IsolateNameServer.lookupPortByName(name);