即兴刷新数据组

时间:2016-04-20 16:01:29

标签: actionscript-3 flex flex4 flash-builder4.5

我使用自定义项目渲染器来渲染 DataGroup 的项目。 问题是每当数据提供者(在我的情况下是Arraylist)的值发生变化时, 渲染需要6-9秒,这是不可接受的。

当我试图回溯问题时,我发现只要数据量较少,DataGroup就会立即刷新,所有项目都会在一秒钟内呈现。

但只要有相对更多的数据,DataGroup需要5-7秒才能刷新。

这是我的数据组:

<s:DataGroup id="selectedInstancesView" dataProvider="{relatedInstances}" width="100%" height="100%"
            itemRenderer="com.ui.renderers.CustomInstanceRenderer"
            clipAndEnableScrolling="true" >

这是将值重新分配给上述数据组的数据提供者的函数:

private function relatedInstanceRetrieved(event:ResultEvent):void{
    trace("related instances retrieved at :: " + new Date());
    relatedInstances = new ArrayList(event.result as Array);
    trace("related instances populated at :: " + new Date());
}

这是在我的custom-item-renderer类中,我在创建项目渲染器的时候打印时间:

protected function itemrenderer1_creationCompleteHandler(event:FlexEvent):void
{
    trace("getting rendered at :: " + new Date());      }

这是我得到的结果:

related instances retrieved at :: Wed Apr 20 **20:58:10** GMT+0530 2016

related instances populated at :: Wed Apr 20 **20:58:10** GMT+0530 2016

getting rendered at :: Wed Apr 20 **20:58:15** GMT+0530 2016

getting rendered at :: Wed Apr 20 20:58:15 GMT+0530 2016

getting rendered at :: Wed Apr 20 20:58:15 GMT+0530 2016

...(1000 similar traces with exact same time)

所有项目渲染器(大约1000个)都是在一秒钟内创建的。

但是,如果你看到,那个时间 重新填充或重新分配数据提供者(relatedInstances) 和 项目渲染器开始创建的时间是 5 秒,这意味着刷新数据需要5秒钟,这是不可接受的。

我尝试过使用invalidateDisplayList();

重新分配项呈示器和invalidateProperties()方法

我正在使用flex sdk 4.6

请赐教。

0 个答案:

没有答案