Apache flex 我的应用程序运行非常慢
我开发了一个基于Advance数据网格的应用程序。在这个网格中,每一列都是在item render的帮助下添加的,我在所有的列标题中也添加了复选框。我将xml创建为字符串,并将该字符串转换为xml。 当我单击任何单元格时,需要10-13秒,在单元格单击处理程序中,我得到System.totalMemory的值为255205376 请任何人告诉我我将做什么 谢谢 我的Xml装箱代码Apache flex 我的应用程序运行非常慢,apache-flex,Apache Flex,我开发了一个基于Advance数据网格的应用程序。在这个网格中,每一列都是在item render的帮助下添加的,我在所有的列标题中也添加了复选框。我将xml创建为字符串,并将该字符串转换为xml。 当我单击任何单元格时,需要10-13秒,在单元格单击处理程序中,我得到System.totalMemory的值为255205376 请任何人告诉我我将做什么 谢谢 我的Xml装箱代码 public function CreateDefaultXml(PojectionPeriod:int):XML{
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);
}
如果不看代码,就很难说问题出在哪里;但第一步是使用Flex builder中的分析工具,更好地了解内存分配的位置以及哪些方法一直在使用
XML集合中有多少“元素”?如果要将dataSource属性设置为CreateDefaultXML函数,Flex将在每次排序数据、单击单元格或调整应用程序窗口大小时调用该函数。几乎任何影响AdvancedDataGrid或其内容的事件都会导致再次调用该函数
最好在组件creationComplete事件处理程序中调用CreateDefaultXML函数,并将值输出到可绑定变量。然后让您的AdvancedDataGrid使用Bindable变量作为数据源,这样您就不会一遍遍地重新创建它。当然,假设您的数据源设置为CreateDefualtXML。您可以发布一些代码吗?这可能有助于我们了解您是如何创建XML的。