1

我制作了一个基本的 Air/Flex 应用程序,它有一个 Home View 和一个 2nd View 并附加了 mxml 事件来激活和停用它们。从主视图有一个按钮可以推动第二个视图。如果我从主视图暂停并重新打开该应用程序,则停用和激活事件会分别触发一次。然后,如果我转到第二个视图并执行相同的操作,则主视图中的激活/停用事件与第二个视图中的事件一起触发。当我返回主视图并重复测试时,会触发 3 组激活/停用事件(2 组来自家,1 组来自 2nd)并且这种情况一直持续下去。为什么会发生这种情况,我该如何预防?我在这里做错了吗?

我已经在 Android 2.3 设备和桌面测试仪上的 Air 3.3-3.5 中对此进行了测试。

4

1 回答 1

0

似乎您以某种方式使用 Event.ACTIVATE 事件而不是 FlexEvent.VIEW_ACTIVATE

当您的应用程序从 os 获得焦点时,将调度 ACTIVATE 事件。它是一个广播事件——每个事件调度程序都会触发它。因此,您的所有视图都会发送它。

视图被回收,因此,当您第二次打开主视图时,似乎有一个您实际在屏幕上看到的新副本和一个在屏幕外等待垃圾收集的旧副本,仍在接收事件。所以,这就是为什么你在主视图中有两个事件。

您可以阅读http://corlan.org/2011/01/12/understanding-flex-mobile-views-and-viewnavigator/以获取有关视图生命周期的更多详细信息。

于 2012-12-05T09:13:33.920 回答