При получении результата от канала платформы происходил жёстко заданный переход к потоку платформы. Для функционирования фоновых каналов изолята необходимо сохранять изолят, отправляющий сообщение, чтобы движок мог организовать получение результата в цикле событий данного изолята. Этот шаг был выполнен с использованием портов Dart. Порты Dart сохраняют изолят, которому они принадлежат, будучи единственным способом управления этими изолятами через Core API.
Другим аспектом, который нужно было реализовать, был способ связи фоновых изолятов с их основным изолятом. Удивительно, но чтобы отключить каналы платформы при уничтожении движка Flutter, нужно знать, какие фоновые изоляты связаны с этим движком. Иначе фоновый изолят может попытаться связаться с движком Flutter, который в данный момент уничтожается. Последствия этого можно увидеть в окончательном API, где для инициализации BackgroundIsolateBinaryMessenger нужно использовать RootIsolateToken.
Ставьте реакцию под постом, чтобы мы знали, что вам это было полезно!
Post #132
1.98K

- 👍 19
- 🔥 9
- 👏 2