summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/AppCompat
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2016-08-02 14:57:08 -0600
committerJason Smith <jason.smith@xamarin.com>2016-08-02 13:57:08 -0700
commit3f88aebe22aaa0f8765648f15f1649c1a5ba2da4 (patch)
tree3d54cdb4a57137ff89cd3e4adcea37c023c9b98d /Xamarin.Forms.Platform.Android/AppCompat
parent34048b7bb4e8bf55c712ffd92303cf260c491c0e (diff)
downloadxamarin-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.cs21
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()