Flex:我应该以哪种方式添加此事件处理程序?

时间:2011-05-22 03:58:36

标签: flex

我在flex项目中经常使用一个工作单元格。我将有一个可以调用Web服务的类,将数据放入sqlite数据库,使用数据刷新模型然后引发事件。

我通常称这些内联并传入一些单例类:

protected function CareerSynced():void
    {
        var process:ProcessWorkouts = new ProcessWorkouts(_dataModel, _trainerModel, _databaseCache, _database.Conn);
        process.addEventListener("AllWorkoutsProcessed", AllWorkoutsProcessed);
        process.UpdateAllUnprocessed();
    }

然后我会得到这样的回复:

private function AllWorkoutsProcessed(event:DataReceivedEvent):void
    {
    //do something here 
    }

我的问题是,我是否正确添加了该事件监听器?我想我可能会导致内存泄漏,但我不确定。我也考虑过使用弱引用。我很困惑何时使用它们。这会是其中一个案例吗?

它应该是这样吗?

process.addEventListener("AllWorkoutsProcessed", AllWorkoutsProcessed,false, 0, true);

1 个答案:

答案 0 :(得分:2)

我要么使用弱引用,要么只是删除侦听器:

private function AllWorkoutsProcessed(event:DataReceivedEvent):void
{
     event.target.removeEventListener("AllWorksoutsProcessed",AllWorkoutsProcessed);
}

我可以列出我的理由,但我会指出你this