我的应用程序运行非常慢

时间:2010-03-19 13:19:12

标签: flex

我开发了一个基于Advance数据网格的应用程序。在这个网格中,每个列都添加了项目渲染的帮助,我在所有列标题中也添加了复选框。在Grid中我使用了xml数据提供程序。我正在创建xml作为字符串并将此字符串转换为xml。 当我点击任何单元格需要10-13秒时,在单元格单击处理程序中,我获得System.totalMemory的值为255205376。

请任何人建议我做什么。

由于

我的Xml crating Code

public function CreateDefaultXml(PojectionPeriod:int):XML{
            var xmlstring:String="<root>";

            xmlstring+="<row>" + 
                    "<Itemname>Item</Itemname>" + 
                    "<Unit>Unit</Unit>" + 
                    "<Cases>Cases</Cases>" + 
                    "<row>1</row>" ;

                for(var i:int=0;i<PojectionPeriod;i++){
                    xmlstring+="<projection_"+i.toString()+">";
                    xmlstring+="<projectionTxt/>";
                    xmlstring+="<growthValue/>";
                    xmlstring+="<projectionFormula/>";
                    xmlstring+="<constantgrowth/>";
                    xmlstring+="<growthWith/>";
                    xmlstring+="<timeProjection/>";
                    xmlstring+="<formula/>";
                    xmlstring+="<IsError/>";
                    xmlstring+="<Image>l</Image>";
                    xmlstring+="<DisplayprojectionTxt/>";
                    xmlstring+="<Style>" + 
                                    "<FontColor></FontColor>"+
                                    "<CellFill>0xffffff</CellFill>"+
                                "</Style>";
                    xmlstring+="<DecimalValue>0</DecimalValue>";
                    xmlstring+="</projection_"+i.toString()+">";
                }
                xmlstring+="<RowSelected>false</RowSelected>";
                xmlstring+="<ItemNameStyle>" + 
                        "<FontColor></FontColor>"+
                        "<CellFill></CellFill>" + 
                    "</ItemNameStyle>" +
                    "<UnitStyle>"  + 
                        "<FontColor></FontColor>"+
                        "<CellFill></CellFill>"  + 
                    "</UnitStyle>"
                    "<CasesStyle>" +
                        "<FontColor></FontColor>"+
                        "<CellFill></CellFill>" +
                    "</CasesStyle>" ;
                xmlstring+="</row>";

            var headerxmlString:String="";
            headerxmlString+="<header>" + 
                        "<Setting>" + 
                            "<Currency></Currency>" + 
                            "<Period></Period>" + 
                            "<NumberOfPeriod></NumberOfPeriod>" + 
                            "<StartPeriod></StartPeriod>" + 
                            "<PeriodFormat>" + 
                                "<Sequence></Sequence>" + 
                                "<Month></Month>" +
                                "<Year></Year>" +
                                "<Separators></Separators>" +
                                "<FontColor></FontColor>"+
                                "<CellFill>0xffffff</CellFill>"+
                            "</PeriodFormat>" + 
                            "<NumberFormat>" + 
                                "<Seperator></Seperator>" + 
                                "<Negative></Negative>" + 
                                "<HardCoded>" + 
                                    "<FontColor>0x000000</FontColor>"+
                                    "<CellFill>0xffffff</CellFill>"+ 
                                "</HardCoded>" + 
                                "<Calculated>" + 
                                    "<FontColor>0x000099</FontColor>"+
                                    "<CellFill>0xfffe83</CellFill>"+
                                "</Calculated>" + 
                                "<DecimalDigit>2</DecimalDigit>" + 
                            "</NumberFormat>" + 
                        "</Setting>"+
                        "<projectname/>";

            headerxmlString+="<headerColumn>";
            var headerArr:Array=new Array();
            for(var j:int=0;j<int(GlobalVariables.GlobalVariables.ProjectionPeriod)+3;j++){
                headerxmlString+="<column_"+i+">"
                    headerxmlString+=false
                headerxmlString+="</column_"+i+">"                  
            }
            headerxmlString+="</headerColumn>"
            headerxmlString+="</header>";
            GlobalVariables.GlobalVariables.HeaderXMLs=XML(headerxmlString);
            xmlstring+=headerxmlString;         
            xmlstring+="</root>";
            return XML(xmlstring);
        }

2 个答案:

答案 0 :(得分:0)

如果不查看代码,很难准确说出问题所在;但第一步是使用Flex构建器中的分析工具来更好地了解内存的分配位置以及哪些方法一直在耗尽。

XML集合中有多少'元素'?

答案 1 :(得分:0)

如果要将dataSource属性设置为CreateDefaultXML函数,则每次对数据进行排序,单击单元格或调整应用程序窗口大小时,Flex都会调用该函数。几乎任何影响AdvancedDataGrid或其内容的事件都会导致再次调用该函数。

最好在组件creationComplete事件处理程序中调用CreateDefaultXML函数,并将值输出到Bindable变量。然后让您的AdvancedDataGrid使用Bindable变量作为您的dataSource,这样您就不会一遍又一遍地重新创建它。 (假设您的dataSource当然设置为CreateDefualtXML()。)