-
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)
[email protected]:flutter/engine.git/compare/eed171ff3538...66bf00b git log eed171f..66bf00b --no-merges --oneline 2019-10-14 [email protected] refactoring chrome_installer (flutter/engine#13122) 2019-10-14 [email protected] Fire PlatformViewController FlutterView callbacks (flutter/engine#13015) 2019-10-14 [email protected] iOS Platform View: Fixed overrelease of the observer. (flutter/engine#13093) 2019-10-14 [email protected] [web] Add basic color per vertex drawVertices API support (flutter/engine#13066) 2019-10-14 [email protected] Support keyboard types on mobile browsers (flutter/engine#13044) 2019-10-14 [email protected] Change IO thread shader cache strategy (flutter/engine#13121) 2019-10-14 [email protected] Roll fuchsia/sdk/core/linux-amd64 from _GTls... to xRgq0... (flutter/engine#13115) 2019-10-14 [email protected] Roll src/third_party/skia 3838fe3c82b4..a7e1b45d9c28 (1 commits) (flutter/engine#13117) 2019-10-14 [email protected] Roll fuchsia/sdk/core/mac-amd64 from E3s7G... to Lk7iT... (flutter/engine#13116) 2019-10-14 [email protected] Roll src/third_party/dart 5fad012d02..892fcf2c45 (15 commits) 2019-10-14 [email protected] Integrate more SkParagraph builder patches (flutter/engine#13094) 2019-10-13 [email protected] Roll fuchsia/sdk/core/mac-amd64 from T3Xkz... to E3s7G... (flutter/engine#13114) 2019-10-12 [email protected] Roll fuchsia/sdk/core/linux-amd64 from lJPDX... to _GTls... (flutter/engine#13113) 2019-10-12 [email protected] Roll fuchsia/sdk/core/mac-amd64 from W9PBe... to T3Xkz... (flutter/engine#13112) 2019-10-12 [email protected] Roll fuchsia/clang/linux-amd64 from q4DVY... to 2EAvs... (flutter/engine#13111) 2019-10-12 [email protected] Roll fuchsia/clang/mac-amd64 from zpVtV... to xTJWs... (flutter/engine#13110) 2019-10-12 [email protected] Roll fuchsia/sdk/core/linux-amd64 from LsxeL... to lJPDX... (flutter/engine#13109) 2019-10-12 [email protected] Roll fuchsia/sdk/core/mac-amd64 from ShVbh... to W9PBe... (flutter/engine#13108) 2019-10-12 [email protected] Roll src/third_party/dart 90ff37e011..5fad012d02 (6 commits) 2019-10-12 [email protected] Roll src/third_party/dart 42dcdf903c..90ff37e011 (7 commits) 2019-10-12 [email protected] Roll src/third_party/skia 8c6c8b0c42e2..3838fe3c82b4 (3 commits) (flutter/engine#13105) 2019-10-12 [email protected] Analyze framework Dart code in presubmit tests (flutter/engine#13037) 2019-10-12 [email protected] [dart_aot_runner] Complete the port of dart_aot_runner (flutter/engine#13103) 2019-10-11 [email protected] Move initialization into FlutterEngine (flutter/engine#12806) 2019-10-11 [email protected] Update felt README (flutter/engine#13097) 2019-10-11 [email protected] Roll src/third_party/dart 9f33e8da04..42dcdf903c (7 commits) 2019-10-11 [email protected] [dart_aot_runner] Generate vmservice aotsnapshots (flutter/engine#13101) 2019-10-11 [email protected] ColorFilter matrix docs (flutter/engine#13100) 2019-10-11 [email protected] cleanup gen_package.py (flutter/engine#13089) 2019-10-11 [email protected] [dart_aot_runner] Use the host_toolchain to build kernels (flutter/engine#13096) 2019-10-11 [email protected] do not wrap font family name (flutter/engine#12801) 2019-10-11 [email protected] Roll src/third_party/skia df640e6d14a5..8c6c8b0c42e2 (12 commits) (flutter/engine#13098) 2019-10-11 [email protected] Remove persistent cache unittest timeout (flutter/engine#13091) 2019-10-11 [email protected] Added FlutterActivity and FlutterFragment hook to cleanUpFlutterEngine() as symmetry for configureFlutterEngine(). (#41943) (flutter/engine#12987) 2019-10-11 [email protected] use rest args for specifying test targets (flutter/engine#13088) 2019-10-11 [email protected] Snapshot the felt tool for faster start-up (flutter/engine#13090) 2019-10-11 [email protected] Roll src/third_party/dart 965b8cb1d8..9f33e8da04 (15 commits) 2019-10-11 [email protected] java imports/style (flutter/engine#13082) 2019-10-11 [email protected] Removed retain cycle from notification center. (flutter/engine#13073) 2019-10-11 [email protected] Roll fuchsia/sdk/core/mac-amd64 from U4IBp... to ShVbh... (flutter/engine#13092) 2019-10-11 [email protected] Roll fuchsia/sdk/core/linux-amd64 from fk6ou... to LsxeL... (flutter/engine#13083) 2019-10-11 [email protected] Roll src/third_party/skia 6c2b2bb02402..df640e6d14a5 (1 commits) (flutter/engine#13080) 2019-10-11 [email protected] Gen package output corrected (flutter/engine#13086) 2019-10-11 [email protected] Print more output when gen_package fails (flutter/engine#13085) ...
[email protected]:flutter/engine.git/compare/eed171ff3538...66bf00b git log eed171f..66bf00b --no-merges --oneline 2019-10-14 [email protected] refactoring chrome_installer (flutter/engine#13122) 2019-10-14 [email protected] Fire PlatformViewController FlutterView callbacks (flutter/engine#13015) 2019-10-14 [email protected] iOS Platform View: Fixed overrelease of the observer. (flutter/engine#13093) 2019-10-14 [email protected] [web] Add basic color per vertex drawVertices API support (flutter/engine#13066) 2019-10-14 [email protected] Support keyboard types on mobile browsers (flutter/engine#13044) 2019-10-14 [email protected] Change IO thread shader cache strategy (flutter/engine#13121) 2019-10-14 [email protected] Roll fuchsia/sdk/core/linux-amd64 from _GTls... to xRgq0... (flutter/engine#13115) 2019-10-14 [email protected] Roll src/third_party/skia 3838fe3c82b4..a7e1b45d9c28 (1 commits) (flutter/engine#13117) 2019-10-14 [email protected] Roll fuchsia/sdk/core/mac-amd64 from E3s7G... to Lk7iT... (flutter/engine#13116) 2019-10-14 [email protected] Roll src/third_party/dart 5fad012d02..892fcf2c45 (15 commits) 2019-10-14 [email protected] Integrate more SkParagraph builder patches (flutter/engine#13094) 2019-10-13 [email protected] Roll fuchsia/sdk/core/mac-amd64 from T3Xkz... to E3s7G... (flutter/engine#13114) 2019-10-12 [email protected] Roll fuchsia/sdk/core/linux-amd64 from lJPDX... to _GTls... (flutter/engine#13113) 2019-10-12 [email protected] Roll fuchsia/sdk/core/mac-amd64 from W9PBe... to T3Xkz... (flutter/engine#13112) 2019-10-12 [email protected] Roll fuchsia/clang/linux-amd64 from q4DVY... to 2EAvs... (flutter/engine#13111) 2019-10-12 [email protected] Roll fuchsia/clang/mac-amd64 from zpVtV... to xTJWs... (flutter/engine#13110) 2019-10-12 [email protected] Roll fuchsia/sdk/core/linux-amd64 from LsxeL... to lJPDX... (flutter/engine#13109) 2019-10-12 [email protected] Roll fuchsia/sdk/core/mac-amd64 from ShVbh... to W9PBe... (flutter/engine#13108) 2019-10-12 [email protected] Roll src/third_party/dart 90ff37e011..5fad012d02 (6 commits) 2019-10-12 [email protected] Roll src/third_party/dart 42dcdf903c..90ff37e011 (7 commits) 2019-10-12 [email protected] Roll src/third_party/skia 8c6c8b0c42e2..3838fe3c82b4 (3 commits) (flutter/engine#13105) 2019-10-12 [email protected] Analyze framework Dart code in presubmit tests (flutter/engine#13037) 2019-10-12 [email protected] [dart_aot_runner] Complete the port of dart_aot_runner (flutter/engine#13103) 2019-10-11 [email protected] Move initialization into FlutterEngine (flutter/engine#12806) 2019-10-11 [email protected] Update felt README (flutter/engine#13097) 2019-10-11 [email protected] Roll src/third_party/dart 9f33e8da04..42dcdf903c (7 commits) 2019-10-11 [email protected] [dart_aot_runner] Generate vmservice aotsnapshots (flutter/engine#13101) 2019-10-11 [email protected] ColorFilter matrix docs (flutter/engine#13100) 2019-10-11 [email protected] cleanup gen_package.py (flutter/engine#13089) 2019-10-11 [email protected] [dart_aot_runner] Use the host_toolchain to build kernels (flutter/engine#13096) 2019-10-11 [email protected] do not wrap font family name (flutter/engine#12801) 2019-10-11 [email protected] Roll src/third_party/skia df640e6d14a5..8c6c8b0c42e2 (12 commits) (flutter/engine#13098) 2019-10-11 [email protected] Remove persistent cache unittest timeout (flutter/engine#13091) 2019-10-11 [email protected] Added FlutterActivity and FlutterFragment hook to cleanUpFlutterEngine() as symmetry for configureFlutterEngine(). (flutter#41943) (flutter/engine#12987) 2019-10-11 [email protected] use rest args for specifying test targets (flutter/engine#13088) 2019-10-11 [email protected] Snapshot the felt tool for faster start-up (flutter/engine#13090) 2019-10-11 [email protected] Roll src/third_party/dart 965b8cb1d8..9f33e8da04 (15 commits) 2019-10-11 [email protected] java imports/style (flutter/engine#13082) 2019-10-11 [email protected] Removed retain cycle from notification center. (flutter/engine#13073) 2019-10-11 [email protected] Roll fuchsia/sdk/core/mac-amd64 from U4IBp... to ShVbh... (flutter/engine#13092) 2019-10-11 [email protected] Roll fuchsia/sdk/core/linux-amd64 from fk6ou... to LsxeL... (flutter/engine#13083) 2019-10-11 [email protected] Roll src/third_party/skia 6c2b2bb02402..df640e6d14a5 (1 commits) (flutter/engine#13080) 2019-10-11 [email protected] Gen package output corrected (flutter/engine#13086) 2019-10-11 [email protected] Print more output when gen_package fails (flutter/engine#13085) ...
Added FlutterActivity and FlutterFragment hook to cleanUpFlutterEngine() as symmetry for configureFlutterEngine(). #41943