diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2016-08-02 14:57:08 -0600 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-08-02 13:57:08 -0700 |
commit | 3f88aebe22aaa0f8765648f15f1649c1a5ba2da4 (patch) | |
tree | 3d54cdb4a57137ff89cd3e4adcea37c023c9b98d /Xamarin.Forms.Platform.Android/AppCompat | |
parent | 34048b7bb4e8bf55c712ffd92303cf260c491c0e (diff) | |
download | xamarin-forms-3f88aebe22aaa0f8765648f15f1649c1a5ba2da4.tar.gz xamarin-forms-3f88aebe22aaa0f8765648f15f1649c1a5ba2da4.tar.bz2 xamarin-forms-3f88aebe22aaa0f8765648f15f1649c1a5ba2da4.zip |
Dispose of child renderers in FrameRenderer (#265)
* Dispose of child renderers in FrameRenderer
* Add missing null check
Diffstat (limited to 'Xamarin.Forms.Platform.Android/AppCompat')
-rw-r--r-- | Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs index b57233ba..3ca14eae 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs @@ -138,9 +138,20 @@ namespace Xamarin.Forms.Platform.Android.AppCompat _visualElementPackager.Dispose(); _visualElementPackager = null; } + + int count = ChildCount; + for (var i = 0; i < count; i++) + { + AView child = GetChildAt(i); + child.Dispose(); + } if (Element != null) + { Element.PropertyChanged -= OnElementPropertyChanged; + UnsubscribeGestureRecognizers(Element); + } + } base.Dispose(disposing); @@ -216,7 +227,10 @@ namespace Xamarin.Forms.Platform.Android.AppCompat _collectionChangeHandler = HandleGestureRecognizerCollectionChanged; var observableCollection = (ObservableCollection<IGestureRecognizer>)view.GestureRecognizers; - observableCollection.CollectionChanged += _collectionChangeHandler; + if (observableCollection != null) + { + observableCollection.CollectionChanged += _collectionChangeHandler; + } } void UnsubscribeGestureRecognizers(VisualElement element) @@ -226,7 +240,10 @@ namespace Xamarin.Forms.Platform.Android.AppCompat return; var observableCollection = (ObservableCollection<IGestureRecognizer>)view.GestureRecognizers; - observableCollection.CollectionChanged -= _collectionChangeHandler; + if (observableCollection != null) + { + observableCollection.CollectionChanged -= _collectionChangeHandler; + } } void UpdateBackgroundColor() |