prevent reference cycles between Java and native objects

This commit is contained in:
Julian Winkler
2024-07-26 21:47:08 +02:00
parent 45801d8f17
commit e3c0931714
30 changed files with 257 additions and 181 deletions

View File

@@ -91,6 +91,8 @@ public class ViewGroup extends View implements ViewParent, ViewManager {
child.parent = null;
children.remove(child);
native_removeView(widget, child.widget);
if (isAttachedToWindow())
child.onDetachedFromWindow();
if (onHierarchyChangeListener != null) {
onHierarchyChangeListener.onChildViewRemoved(this, child);
}
@@ -114,6 +116,8 @@ public class ViewGroup extends View implements ViewParent, ViewManager {
child.parent = null;
it.remove();
native_removeView(widget, child.widget);
if (isAttachedToWindow())
child.onDetachedFromWindow();
if (onHierarchyChangeListener != null) {
onHierarchyChangeListener.onChildViewRemoved(this, child);
}
@@ -317,6 +321,14 @@ public class ViewGroup extends View implements ViewParent, ViewManager {
}
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
for (View child: children) {
child.onDetachedFromWindow();
}
}
protected boolean isChildrenDrawingOrderEnabled() { return false; }
@Override