diff --git a/packages/image_picker/CHANGELOG.md b/packages/image_picker/CHANGELOG.md index f55fd630e178..fdac76b551c9 100644 --- a/packages/image_picker/CHANGELOG.md +++ b/packages/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.0+19 + +* Android: Fix memory leak due not unregistering ActivityLifecycleCallbacks. + ## 0.6.0+18 * Fix video play in example and update video_player plugin dependency. 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..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 @@ -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); } } 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); } 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: