Apache flex 未垃圾收集Flex Mobile IconItemRenderer
我有一个ItemRenders扩展IconItemRenderer的列表。。。当我来到一个页面时,我会处理列表,当我离开时,我会删除它 在开始的分析器中,我有1个列表和12个ItemRenders。。。过了一会儿,仍然有1个列表和我访问页面的数量*12个ItemRenders(4次访问,48个ItemRenders) 你知道我怎样才能把垃圾收集起来吗?在分析器中,我看不到任何与我的代码相关的内容(ObjectReferences) 对我来说唯一的提示是在IconItemRenderer中:Apache flex 未垃圾收集Flex Mobile IconItemRenderer,apache-flex,memory,mobile,memory-leaks,itemrenderer,Apache Flex,Memory,Mobile,Memory Leaks,Itemrenderer,我有一个ItemRenders扩展IconItemRenderer的列表。。。当我来到一个页面时,我会处理列表,当我离开时,我会删除它 在开始的分析器中,我有1个列表和12个ItemRenders。。。过了一会儿,仍然有1个列表和我访问页面的数量*12个ItemRenders(4次访问,48个ItemRenders) 你知道我怎样才能把垃圾收集起来吗?在分析器中,我看不到任何与我的代码相关的内容(ObjectReferences) 对我来说唯一的提示是在IconItemRenderer中: pr
private function attachLoadingListenersToIconDisplay():void
{
if (iconDisplay)
{
iconDisplay.addEventListener(IOErrorEvent.IO_ERROR, iconDisplay_loadErrorHandler, false, 0, true);
iconDisplay.addEventListener(SecurityErrorEvent.SECURITY_ERROR, iconDisplay_loadErrorHandler, false, 0, true);
}
}
听众似乎没有被删除
处理列表
if(myList)
{
myList.dataProvider = null;
if(contains(myList))
{
myList.parent.removeChild(myList);
}
}
myList= null;
有人有主意吗
更多信息:
我的ItemRenderer扩展了IconItemRenderer
我有一个UIComponent,其中包含一个列表:
override protected function createChildren():void
{
super.createChildren();
...
myList= new List();
myList.setStyle('contentBackgroundAlpha', 1);
myList.setStyle('contentBackgroundColor', 0x333333);
myList.setStyle("horizontalScrollPolicy", ScrollPolicy.OFF);
myList.height = 6 * ROW_HEIGHT;
myList.horizontalCenter = 0;
myList.itemRenderer = new ClassFactory(MyItemRenderer);
addChild(myList);
if(myList.layout && myList.layout is VerticalLayout)
{
VerticalLayout(myList.layout).variableRowHeight = false;
VerticalLayout(myList.layout).gap = 1;
}
}
并将其处置:
public function dispose():void
{
...
if(myList)
{
myList.dataProvider = null;
if(contains(myList))
{
removeChild(myList);
}
}
myList= null;
}
何时调用“attachLoadingListenersToIconDisplay()”?它是渲染器的一部分吗?渲染器中是否有删除事件侦听器的代码?若否,;每次调用该方法时,您可以将事件侦听器堆叠在彼此之上。dispose列表代码在哪里调用?调用“parent.removeChild”给我留下了“off”的印象。以下步骤帮助我找到了阻止垃圾收集的悬空引用:iconDisplay是否属于同一个类,其中包含作为侦听器添加到该类中的方法?该类是否已从显示列表中删除?添加了更多代码。。。函数attachLoadingListenersToIconDisplay位于IconItemRenderer(FlexFramework代码)中,列表本身将从显示中删除list@NTyler... 如上所述,我以IconItemRenderer的attachLoadingListenersToIconDisplay结束