-
Notifications
You must be signed in to change notification settings - Fork 6k
Added FlutterActivity and FlutterFragment hook to cleanUpFlutterEngine() as symmetry for configureFlutterEngine(). (#41943) #12987
Conversation
…e() as symmetry for configureFlutterEngine(). (flutter#41943)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The implementation itself LG but I want to make sure I understand the overall approach and problem here.
Is this from our discussion about how it's tedious as a plugin author to have to manually manage clean up method channels? Or is it solving something else? I'm trying to reason it out because the only thing that's happening in configureFlutterEngine that I know of at the moment is plugin registration. So this new hook would naturally be a place to unregister plugins, but I don't think we have a definition of what unregistering a plugin would mean on the FlutterPlugin interface itself. So it's not really clear to me what app or plugin authors should be doing with this hook exactly once it's added.
|
This is primarily for cases where an app developer is directly adding channels, plugins aside. @redbrogdon is working on a canonical example that shows communication from Flutter to the app and it became clear that if you set up channels in As for plugins, if we'd like to facilitate deregistration, then we probably want to add such a method to the |
mklim
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah okay, understood. LGTM.
I think for plugins this equivalent hook already exists in the form of onFlutterEngineDetached (may not be the exact name). So adding yet another hook for plugin authors to write their cleanup code in wouldn't be super useful. The case I was thinking of before would be if we could handle cleaning up the method channel references automatically somehow instead of requiring plugin authors to store references to the channels and then call setMethodHandler(null) on them manually when the engine is cleaned up.
This is off-topic for this PR, I wonder if it would be possible to borrow the RAII principle here so this kind of after the fact hook cleanup isn't necessary at all for the Channels. We don't have destructors in Java so I'm not really sure if we could handle this responsibility totally internally without a broad rewrite, but maybe it's worth looking into. It's not intuitive at all that setMethodHandler needs to be deliberately cleared after the fact, I expect there is and is going to be a lot of leaks based on that getting missed.
redbrogdon
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
| } | ||
|
|
||
| /** | ||
| * Hook for the host to cleanup references that were established in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: "clean up" here and below
…terEngine() as symmetry for configureFlutterEngine(). (flutter#41943) (flutter/engine#12987)
git@github.com:flutter/engine.git/compare/eed171ff3538...66bf00b git log eed171f..66bf00b --no-merges --oneline 2019-10-14 50856934+nturgut@users.noreply.github.com refactoring chrome_installer (flutter/engine#13122) 2019-10-14 mklim@google.com Fire PlatformViewController FlutterView callbacks (flutter/engine#13015) 2019-10-14 30870216+gaaclarke@users.noreply.github.com iOS Platform View: Fixed overrelease of the observer. (flutter/engine#13093) 2019-10-14 ferhat@gmail.com [web] Add basic color per vertex drawVertices API support (flutter/engine#13066) 2019-10-14 mouad.debbar@gmail.com Support keyboard types on mobile browsers (flutter/engine#13044) 2019-10-14 liyuqian@google.com Change IO thread shader cache strategy (flutter/engine#13121) 2019-10-14 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from _GTls... to xRgq0... (flutter/engine#13115) 2019-10-14 skia-flutter-autoroll@skia.org Roll src/third_party/skia 3838fe3c82b4..a7e1b45d9c28 (1 commits) (flutter/engine#13117) 2019-10-14 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from E3s7G... to Lk7iT... (flutter/engine#13116) 2019-10-14 bkonyi@google.com Roll src/third_party/dart 5fad012d02..892fcf2c45 (15 commits) 2019-10-14 jason-simmons@users.noreply.github.com Integrate more SkParagraph builder patches (flutter/engine#13094) 2019-10-13 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from T3Xkz... to E3s7G... (flutter/engine#13114) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from lJPDX... to _GTls... (flutter/engine#13113) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from W9PBe... to T3Xkz... (flutter/engine#13112) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/clang/linux-amd64 from q4DVY... to 2EAvs... (flutter/engine#13111) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/clang/mac-amd64 from zpVtV... to xTJWs... (flutter/engine#13110) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from LsxeL... to lJPDX... (flutter/engine#13109) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from ShVbh... to W9PBe... (flutter/engine#13108) 2019-10-12 bkonyi@google.com Roll src/third_party/dart 90ff37e011..5fad012d02 (6 commits) 2019-10-12 bkonyi@google.com Roll src/third_party/dart 42dcdf903c..90ff37e011 (7 commits) 2019-10-12 skia-flutter-autoroll@skia.org Roll src/third_party/skia 8c6c8b0c42e2..3838fe3c82b4 (3 commits) (flutter/engine#13105) 2019-10-12 liyuqian@google.com Analyze framework Dart code in presubmit tests (flutter/engine#13037) 2019-10-12 iska.kaushik@gmail.com [dart_aot_runner] Complete the port of dart_aot_runner (flutter/engine#13103) 2019-10-11 matthew-carroll@users.noreply.github.com Move initialization into FlutterEngine (flutter/engine#12806) 2019-10-11 ferhat@gmail.com Update felt README (flutter/engine#13097) 2019-10-11 bkonyi@google.com Roll src/third_party/dart 9f33e8da04..42dcdf903c (7 commits) 2019-10-11 iska.kaushik@gmail.com [dart_aot_runner] Generate vmservice aotsnapshots (flutter/engine#13101) 2019-10-11 dnfield@google.com ColorFilter matrix docs (flutter/engine#13100) 2019-10-11 dnfield@google.com cleanup gen_package.py (flutter/engine#13089) 2019-10-11 iska.kaushik@gmail.com [dart_aot_runner] Use the host_toolchain to build kernels (flutter/engine#13096) 2019-10-11 50856934+nturgut@users.noreply.github.com do not wrap font family name (flutter/engine#12801) 2019-10-11 skia-flutter-autoroll@skia.org Roll src/third_party/skia df640e6d14a5..8c6c8b0c42e2 (12 commits) (flutter/engine#13098) 2019-10-11 liyuqian@google.com Remove persistent cache unittest timeout (flutter/engine#13091) 2019-10-11 matthew-carroll@users.noreply.github.com Added FlutterActivity and FlutterFragment hook to cleanUpFlutterEngine() as symmetry for configureFlutterEngine(). (#41943) (flutter/engine#12987) 2019-10-11 yjbanov@google.com use rest args for specifying test targets (flutter/engine#13088) 2019-10-11 yjbanov@google.com Snapshot the felt tool for faster start-up (flutter/engine#13090) 2019-10-11 bkonyi@google.com Roll src/third_party/dart 965b8cb1d8..9f33e8da04 (15 commits) 2019-10-11 dnfield@google.com java imports/style (flutter/engine#13082) 2019-10-11 30870216+gaaclarke@users.noreply.github.com Removed retain cycle from notification center. (flutter/engine#13073) 2019-10-11 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from U4IBp... to ShVbh... (flutter/engine#13092) 2019-10-11 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from fk6ou... to LsxeL... (flutter/engine#13083) 2019-10-11 skia-flutter-autoroll@skia.org Roll src/third_party/skia 6c2b2bb02402..df640e6d14a5 (1 commits) (flutter/engine#13080) 2019-10-11 dnfield@google.com Gen package output corrected (flutter/engine#13086) 2019-10-11 dnfield@google.com Print more output when gen_package fails (flutter/engine#13085) ...
git@github.com:flutter/engine.git/compare/eed171ff3538...66bf00b git log eed171f..66bf00b --no-merges --oneline 2019-10-14 50856934+nturgut@users.noreply.github.com refactoring chrome_installer (flutter/engine#13122) 2019-10-14 mklim@google.com Fire PlatformViewController FlutterView callbacks (flutter/engine#13015) 2019-10-14 30870216+gaaclarke@users.noreply.github.com iOS Platform View: Fixed overrelease of the observer. (flutter/engine#13093) 2019-10-14 ferhat@gmail.com [web] Add basic color per vertex drawVertices API support (flutter/engine#13066) 2019-10-14 mouad.debbar@gmail.com Support keyboard types on mobile browsers (flutter/engine#13044) 2019-10-14 liyuqian@google.com Change IO thread shader cache strategy (flutter/engine#13121) 2019-10-14 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from _GTls... to xRgq0... (flutter/engine#13115) 2019-10-14 skia-flutter-autoroll@skia.org Roll src/third_party/skia 3838fe3c82b4..a7e1b45d9c28 (1 commits) (flutter/engine#13117) 2019-10-14 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from E3s7G... to Lk7iT... (flutter/engine#13116) 2019-10-14 bkonyi@google.com Roll src/third_party/dart 5fad012d02..892fcf2c45 (15 commits) 2019-10-14 jason-simmons@users.noreply.github.com Integrate more SkParagraph builder patches (flutter/engine#13094) 2019-10-13 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from T3Xkz... to E3s7G... (flutter/engine#13114) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from lJPDX... to _GTls... (flutter/engine#13113) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from W9PBe... to T3Xkz... (flutter/engine#13112) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/clang/linux-amd64 from q4DVY... to 2EAvs... (flutter/engine#13111) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/clang/mac-amd64 from zpVtV... to xTJWs... (flutter/engine#13110) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from LsxeL... to lJPDX... (flutter/engine#13109) 2019-10-12 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from ShVbh... to W9PBe... (flutter/engine#13108) 2019-10-12 bkonyi@google.com Roll src/third_party/dart 90ff37e011..5fad012d02 (6 commits) 2019-10-12 bkonyi@google.com Roll src/third_party/dart 42dcdf903c..90ff37e011 (7 commits) 2019-10-12 skia-flutter-autoroll@skia.org Roll src/third_party/skia 8c6c8b0c42e2..3838fe3c82b4 (3 commits) (flutter/engine#13105) 2019-10-12 liyuqian@google.com Analyze framework Dart code in presubmit tests (flutter/engine#13037) 2019-10-12 iska.kaushik@gmail.com [dart_aot_runner] Complete the port of dart_aot_runner (flutter/engine#13103) 2019-10-11 matthew-carroll@users.noreply.github.com Move initialization into FlutterEngine (flutter/engine#12806) 2019-10-11 ferhat@gmail.com Update felt README (flutter/engine#13097) 2019-10-11 bkonyi@google.com Roll src/third_party/dart 9f33e8da04..42dcdf903c (7 commits) 2019-10-11 iska.kaushik@gmail.com [dart_aot_runner] Generate vmservice aotsnapshots (flutter/engine#13101) 2019-10-11 dnfield@google.com ColorFilter matrix docs (flutter/engine#13100) 2019-10-11 dnfield@google.com cleanup gen_package.py (flutter/engine#13089) 2019-10-11 iska.kaushik@gmail.com [dart_aot_runner] Use the host_toolchain to build kernels (flutter/engine#13096) 2019-10-11 50856934+nturgut@users.noreply.github.com do not wrap font family name (flutter/engine#12801) 2019-10-11 skia-flutter-autoroll@skia.org Roll src/third_party/skia df640e6d14a5..8c6c8b0c42e2 (12 commits) (flutter/engine#13098) 2019-10-11 liyuqian@google.com Remove persistent cache unittest timeout (flutter/engine#13091) 2019-10-11 matthew-carroll@users.noreply.github.com Added FlutterActivity and FlutterFragment hook to cleanUpFlutterEngine() as symmetry for configureFlutterEngine(). (flutter#41943) (flutter/engine#12987) 2019-10-11 yjbanov@google.com use rest args for specifying test targets (flutter/engine#13088) 2019-10-11 yjbanov@google.com Snapshot the felt tool for faster start-up (flutter/engine#13090) 2019-10-11 bkonyi@google.com Roll src/third_party/dart 965b8cb1d8..9f33e8da04 (15 commits) 2019-10-11 dnfield@google.com java imports/style (flutter/engine#13082) 2019-10-11 30870216+gaaclarke@users.noreply.github.com Removed retain cycle from notification center. (flutter/engine#13073) 2019-10-11 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/mac-amd64 from U4IBp... to ShVbh... (flutter/engine#13092) 2019-10-11 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from fk6ou... to LsxeL... (flutter/engine#13083) 2019-10-11 skia-flutter-autoroll@skia.org Roll src/third_party/skia 6c2b2bb02402..df640e6d14a5 (1 commits) (flutter/engine#13080) 2019-10-11 dnfield@google.com Gen package output corrected (flutter/engine#13086) 2019-10-11 dnfield@google.com Print more output when gen_package fails (flutter/engine#13085) ...
Added FlutterActivity and FlutterFragment hook to cleanUpFlutterEngine() as symmetry for configureFlutterEngine(). #41943