Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(messaging): use FlutterEngineGroup to improve performance of background handlers #9867

Merged
merged 2 commits into from
Nov 8, 2022

Conversation

Lyokone
Copy link
Contributor

@Lyokone Lyokone commented Nov 7, 2022

Description

Moving to FlutterEngineGroup is more performant and allows for a shared heap

Related Issues

#9816

Checklist

Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]).
This will ensure a smooth and quick review process. Updating the pubspec.yaml and changelogs is not required.

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
  • All existing and new tests are passing.
  • I updated/added relevant documentation (doc comments with ///).
  • The analyzer (melos run analyze) does not report any problems on my PR.
  • I read and followed the Flutter Style Guide.
  • I signed the CLA.
  • I am willing to follow-up on review comments in a timely manner.

Breaking Change

Does your PR require plugin users to manually update their apps to accommodate your change?

  • Yes, this is a breaking change.
  • No, this is not a breaking change.

}
Log.i(TAG, "Creating background FlutterEngine instance.");
backgroundFlutterEngine =
new FlutterEngineGroup(ContextHolder.getApplicationContext())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is going to give us what we want. In order for you to avoid creating another isolate group and get the benefit of faster starting lower memory engines you'll have to share the FlutterEngineGroup between the plugin and the host app. I don't think there is a way for you to do that today since there is no guarantee the host app is using the FlutterEngineGroup.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the flip side, isolate platform channels is about to land on stable. This allows sending platform channel messages from background isolates. I believe that will remove the need this plugin has for spawning an engine in the first place. It's probably better we just lean into that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the recommendation, I'll check that once it has land in stable :)

@firebase firebase locked and limited conversation to collaborators Dec 9, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants