我制作了一个基本的Air / Flex应用程序,它有一个Home View和一个第二个视图,并附加了mxml事件,用于激活和停用它们。从主视图中有一个按钮可以推动第二个视图。如果我从主视图暂停并重新打开应用程序,则每次激活取消激活和激活事件。然后,如果我转到第二个视图并执行相同的操作,主视图中的激活/取消激活事件将从第二个视图中触发。当我回到主视图并重复测试时,激活/停用3组事件(2个来自家庭,1个来自第2个),这样就会继续。为什么会发生这种情况,我该如何预防呢?我在这里做错了吗?
我已经在Android 2.3设备和桌面测试仪上的Air 3.3-3.5中进行了测试。
答案 0 :(得分:0)
您似乎以某种方式使用Event.ACTIVATE事件而不是FlexEvent.VIEW_ACTIVATE
当您的应用程序从操作系统获得焦点时,将调度ACTIVATE事件。它是一个广播事件 - 每个eventdispatcher都会触发它。因此,您的所有观点都会发送给它。
视图被循环使用,因此,当您第二次打开主视图时,似乎有一个您在屏幕上实际看到的新副本以及一个旧的副本,它正在等待屏幕上的垃圾收集,仍在接收事件。所以,这就是为什么你在家庭视野中有两个事件。
您可以阅读http://corlan.org/2011/01/12/understanding-flex-mobile-views-and-viewnavigator/,了解有关视图生命周期的详细信息。