From 8d8238aa8720dd038f1db748e4686a211017eb7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20Cotta?= Date: Tue, 23 Jul 2019 03:49:26 -0300 Subject: [PATCH 1/5] fix memory leak due not unregistration of ActivityLifecycleCallbacks --- .../plugins/imagepicker/ImagePickerPlugin.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java index 371a258966c0..05df82a334ce 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java @@ -80,18 +80,18 @@ public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override - public void onActivityDestroyed(Activity activity) {} + public void onActivityDestroyed(Activity activity) { + if (activity == registrar.activity()) { + ((Application) registrar.context()).unregisterActivityLifecycleCallbacks(this); + } + } @Override public void onActivityStopped(Activity activity) {} }; - if (this.registrar != null - && this.registrar.activity() != null - && this.registrar.activity().getApplication() != null) { - this.registrar - .activity() - .getApplication() + if (this.registrar != null) { + ((Application)this.registrar.context()) .registerActivityLifecycleCallbacks(this.activityLifecycleCallbacks); } } From 628ac3812e91f32055e8548be5730647b4299331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20Cotta?= Date: Tue, 23 Jul 2019 03:51:24 -0300 Subject: [PATCH 2/5] update pubspec.yaml and CHANGELOG.md --- packages/image_picker/CHANGELOG.md | 4 ++++ packages/image_picker/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/image_picker/CHANGELOG.md b/packages/image_picker/CHANGELOG.md index 44c8cc9dd01e..5be649cf90bb 100644 --- a/packages/image_picker/CHANGELOG.md +++ b/packages/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.0+18 + +* Android: Fix memory leak due not unregistering ActivityLifecycleCallbacks. + ## 0.6.0+17 * iOS: Fix a crash when user captures image from the camera with devices under iOS 11. diff --git a/packages/image_picker/pubspec.yaml b/packages/image_picker/pubspec.yaml index 721e6abdfbeb..9da16aa6edaf 100755 --- a/packages/image_picker/pubspec.yaml +++ b/packages/image_picker/pubspec.yaml @@ -6,7 +6,7 @@ authors: - Rhodes Davis Jr. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker -version: 0.6.0+17 +version: 0.6.0+18 flutter: plugin: From 852dc9eca0df8692647c78188fd0b45fb63cfbde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20Cotta?= Date: Tue, 23 Jul 2019 03:52:25 -0300 Subject: [PATCH 3/5] format code --- .../java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java index 05df82a334ce..bff7cf4b6cae 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java @@ -91,7 +91,7 @@ public void onActivityStopped(Activity activity) {} }; if (this.registrar != null) { - ((Application)this.registrar.context()) + ((Application) this.registrar.context()) .registerActivityLifecycleCallbacks(this.activityLifecycleCallbacks); } } From 56281c386c030d99c78e9fb5d8790c38352039fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20Cotta?= Date: Tue, 23 Jul 2019 19:51:11 -0300 Subject: [PATCH 4/5] mock application for test --- .../io/flutter/plugins/imagepicker/ImagePickerPluginTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java index efb9b4526f9e..e37fceb7fdea 100644 --- a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java +++ b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java @@ -8,6 +8,7 @@ import static org.mockito.Mockito.when; import android.app.Activity; +import android.app.Application; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.PluginRegistry; @@ -28,6 +29,7 @@ public class ImagePickerPluginTest { @Mock PluginRegistry.Registrar mockRegistrar; @Mock Activity mockActivity; + @Mock Application mockApplication; @Mock ImagePickerDelegate mockImagePickerDelegate; @Mock MethodChannel.Result mockResult; @@ -36,6 +38,7 @@ public class ImagePickerPluginTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); + when(mockRegistrar.context()).thenReturn(mockApplication); plugin = new ImagePickerPlugin(mockRegistrar, mockImagePickerDelegate); } From 5eea857faf154d1d52367271dba4e70ae24f5162 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Mon, 29 Jul 2019 09:08:50 -0700 Subject: [PATCH 5/5] Update pubspec.yaml --- packages/image_picker/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/image_picker/pubspec.yaml b/packages/image_picker/pubspec.yaml index d14b1ed688e9..d43983ddc585 100755 --- a/packages/image_picker/pubspec.yaml +++ b/packages/image_picker/pubspec.yaml @@ -6,7 +6,7 @@ authors: - Rhodes Davis Jr. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker -version: 0.6.0+18 +version: 0.6.0+19 flutter: plugin: