1

Home View と 2nd View を持つ基本的な Air/Flex アプリを作成し、それぞれにアクティブ化および非アクティブ化するための mxml イベントを添付しました。ホーム ビューから、2 番目のビューを押すボタンがあります。ホーム ビューからアプリを一時停止して再度開くと、非アクティブ化イベントとアクティブ化イベントがそれぞれ 1 回発生します。次に、2 番目のビューに移動して同じことを行うと、2 番目のビューのイベントと一緒にホーム ビューのアクティブ化/非アクティブ化イベントが発生します。ホーム ビューに戻ってテストを繰り返すと、3 セットのアクティブ化/非アクティブ化イベントが発生し (ホームから 2 つ、2 つ目から 1 つ)、これが継続します。なぜこれが起こっているのですか、どうすればそれを防ぐことができますか? ここで何か間違ったことをしていますか?

これは、Android 2.3 デバイスとデスクトップ テスターの Air 3.3-3.5 でテストしました。

4

1 に答える 1

0

FlexEvent.VIEW_ACTIVATE の代わりに Event.ACTIVATE イベントを何らかの形で使用しているようです

アプリが OS からフォーカスを取得すると、ACTIVATE イベントが送出されます。これはブロードキャスト イベントです。各イベント ディスパッチャーがそれを起動します。したがって、すべてのビューがそれをディスパッチします。

ビューはリサイクルされるため、ホーム ビューを 2 回目に開くと、実際に画面に表示される新しいコピーと、画面外でガベージ コレクションを待機している古いコピーがあり、まだイベントを受信して​​いるように見えます。そのため、ホーム ビューから 2 つのイベントが表示されます。

ビューのライフサイクルの詳細については、http://corlan.org/2011/01/12/understanding-flex-mobile-views-and-viewnavigator/を参照してください。

于 2012-12-05T09:13:33.920 に答える