Apache flex 重新使用HTTPService对象时出现的问题

Apache flex 重新使用HTTPService对象时出现的问题,apache-flex,httpservice,Apache Flex,Httpservice,我试图在flex应用程序中重用HTTPService对象,但遇到了一个问题。在ResultEvent.RESULT的处理程序中,我正在删除侦听器,但它没有被删除。我必须从send()捕获asyncToken并附加一个新属性,以便知道它在处理程序中应该做什么 我在这里举了一个例子: 您可以右键单击并查看源代码 是否有其他人遇到侦听器未被删除的问题?HTTPService是否应该重新使用?不能保证事件侦听器将被删除。在对象上安装时,尝试将其设置为弱事件处理程序。当您删除它时,Flex的GC更有可能释

我试图在flex应用程序中重用HTTPService对象,但遇到了一个问题。在ResultEvent.RESULT的处理程序中,我正在删除侦听器,但它没有被删除。我必须从send()捕获asyncToken并附加一个新属性,以便知道它在处理程序中应该做什么

我在这里举了一个例子:
您可以右键单击并查看源代码


是否有其他人遇到侦听器未被删除的问题?HTTPService是否应该重新使用?

不能保证事件侦听器将被删除。在对象上安装时,尝试将其设置为弱事件处理程序。当您删除它时,Flex的GC更有可能释放它。

无法保证事件侦听器将被删除。在对象上安装时,尝试将其设置为弱事件处理程序。当您删除它时,Flex的GC更有可能释放它。

您无法删除添加在mxml标记中的事件侦听器。 说:

只能删除在ActionScript块中使用addEventListener()方法添加的事件侦听器。无法删除在MXML标记中定义的事件侦听器


在actionscript(
creationComplete
应用程序)中定义您的
HTTPService
对象,并使用
addEventListener
方法添加事件监听器,以便您可以对其调用
removeEventListener
以重用。

您不能删除mxml标记中添加的事件监听器。 说:

只能删除在ActionScript块中使用addEventListener()方法添加的事件侦听器。无法删除在MXML标记中定义的事件侦听器


在actionscript中定义您的
HTTPService
对象(
creationComplete
)并使用
addEventListener
方法添加事件侦听器,这样您就可以调用
removeEventListener
对它们进行重用。

我今天在一个运行了几个月的应用程序上遇到了这个问题。经过几个小时的调试,我发现我的flex编译器设置最近从3.1升级到3.4是罪魁祸首。目前,我已经将3.1恢复为编译环境,以便我的项目继续工作

在我看来,这是Flex3.1之后引入的一个主要错误,我希望adobe能尽快修复它。我在代码中一直重复使用HTTPService,这个错误使3.4版对我来说不可行


希望这能有所帮助。

我今天在一个运行了几个月的应用程序中遇到了这个问题。经过几个小时的调试,我发现我的flex编译器设置最近从3.1升级到3.4是罪魁祸首。目前,我已经将3.1恢复为编译环境,以便我的项目继续工作

在我看来,这是Flex3.1之后引入的一个主要错误,我希望adobe能尽快修复它。我在代码中一直重复使用HTTPService,这个错误使3.4版对我来说不可行



希望这能有所帮助。

这就是我目前使用的方法。调用removeEventListener时未删除事件。请重新阅读。无法使用removeEventListener删除通过mxml添加的事件侦听器。现在我明白你的意思了。我想你的意思是如果你在MXML标签上使用内联的东西。由于我在.MXML文件中创建HTTPService调用,因此无法使用removeEventListener。星期一我会试试的,效果很好。我将HTTPService请求移出到一个包装文件中,并且能够删除eventListeners。感谢您的帮助。这是Flex3.4中存在的一个bug的解决方案。它在以前的版本中运行良好。这就是我目前使用的方法。调用removeEventListener时未删除事件。请重新阅读。无法使用removeEventListener删除通过mxml添加的事件侦听器。现在我明白你的意思了。我想你的意思是如果你在MXML标签上使用内联的东西。由于我在.MXML文件中创建HTTPService调用,因此无法使用removeEventListener。星期一我会试试的,效果很好。我将HTTPService请求移出到一个包装文件中,并且能够删除eventListeners。感谢您的帮助。这是Flex3.4中存在的一个bug的解决方案。它在以前的版本中运行良好。我尝试创建一个弱引用,但仍然无法删除它们。addEventListener(ResultEvent.RESULT,PopulateFileList,false,0,true)。removeEventListener(ResultEvent.RESULT,PopulateFileList,false);正如我所说,由VM来执行GC。这是正确的方法。但是,AS3 VM显然发现一些引用仍然指向此资源,因此没有删除事件处理程序。我想是时候检查代码的其余部分了?我尝试创建一个弱引用,但它仍然没有删除它们。addEventListener(ResultEvent.RESULT,PopulateFileList,false,0,true)。removeEventListener(ResultEvent.RESULT,PopulateFileList,false);正如我所说,由VM来执行GC。这是正确的方法。但是,AS3 VM显然发现一些引用仍然指向此资源,因此没有删除事件处理程序。是时候检查其余的代码了,我相信?很高兴知道这是一个bug,我的代码没有问题。我必须更新这个示例以重用该服务,并将其作为bug提交给adobe。谢谢,你说得对。我用Flex3.0测试了我的代码的一个带标签的版本,它工作得非常好。这是代码中的一个新错误。我将把这个提交给adobe。谢谢你的帮助。我已经向adobe报告了这个bug。很高兴知道这是一个bug,我的代码没有问题。我必须更新这个示例以重用该服务,并将其作为bug提交给adobe。谢谢,你说得对。我用Flex3.0测试了我的代码的一个带标签的版本,它工作得非常好。这是代码中的一个新错误。我将把这个提交给adobe。