Какова последовательность созданияComplete, Activate, ViewActivate и AddedToStage и что они делают? - PullRequest
0 голосов
/ 22 декабря 2011

Я новичок в flex и actioncript. Я хочу знать, когда запускается мобильное приложение, какова последовательность вызова этих методов и что они на самом деле делают по отдельности. Я запутался в этих функциях: creationComplete, activ, viewActivate и AddedToStage для начала приложения и деактивации и ViewDeactivate для закрытия приложения.

Вот код, который я написал, чтобы проверить его.

<?xml version="1.0" encoding="utf-8"?>
<s:View viewDeactivate="viewDeactivate()"
    deactivate="deactivate()"
    addedToStage="addedToStage()"
    viewActivate="viewActivate()"
    activate="activate()"
    creationComplete="init()" 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:flextras="http://www.flextras.com/mxml">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
    <![CDATA[

        private function viewDeactivate():void{
            trace("viewDeactivate");
        }

        private function deactivate():void{
            trace("deactivate");
        }

        private function addedToStage():void{
            trace("addedToStage");
        }

        private function viewActivate():void{
            trace("viewActivate");
        }

        private function init():void{
            trace("creationComplete");
        }

        private function activate():void{
            trace("activate");
        }

    ]]>
</fx:Script>

Я просто запускаю его на мобильном телефоне Android, и при первом запуске и закрытии он отображает:

creationComplete
viewActivate
addedToStage
viewDeactivate
deactivate

А потом я открываю и закрываю его снова и снова, всегда отображается:

viewActivate
activate
viewDeactivate
deactivate
viewActivate
activate
viewDeactivate
deactivate

Только когда я использую настройки системы Android для «принудительного закрытия» приложения, затем я запускаю его, оно снова отображает:

creationComplete
viewActivate
addedToStage
viewDeactivate
deactivate

Так кто-нибудь знает, почему в первый раз, когда я запускаю его, он отображает только «viewActivate», но не «активировать», а в будущем, когда я его запускаю, он отображает оба, но пропускает «addToStage» и «creationComplete»? Кто-нибудь может сказать мне, для чего используются эти функции? Что они на самом деле делают? И почему последовательность отображается так? Также кто-нибудь знает, в чем разница между «активировать» и «viewActivate», а также «деактивировать» и «viewDeactivate»?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

activate событие наследуется от EventDispatcher (реализация по умолчанию класса диспетчеризации событий, присутствующего во время выполнения проигрывателя). Этот класс обычно расширяется другими классами, если они хотят иметь возможность отправлять события. Это конкретное событие отправляется "когда приложение Flash Player или AIR получает фокус операционной системы и становится активным" Обратите внимание, что это событие широковещательного типа, что означает, что вам не нужно для прослушивания любого конкретного диспетчера он вызывается любым существующим слушателем.

addedToStage отправляется , когда слушатель добавляется в список отображения (его свойства, такие как stage, parent и loaderInfo, заполнены и, потенциально, он может начать получать события взаимодействия например, события мыши, события касания и т. д.) Это одно из базовых событий, доступных для всех экранных объектов.

viewActivate - это специфическое для мобильных устройств событие, отправляемое классами, унаследованными от spark.components.View. Насколько я понимаю, он отправляется, как только представление (которое его отправляет) становится видимым для пользователя.

creationComplete является специфическим для Flex Framework. Он будет отправлен классом View, упомянутым выше, поскольку он является расширением UIComponent, который является основным компонентом инфраструктуры Flex. Это событие отправляется после того, как все свойства компонентов, объявленные в шаблоне MXML, были установлены , компонент завершил цикл проверки, был размечен и т. Д.

К сожалению, в соответствии с дизайном Adobe вы должны использовать Flex Framework для доступа к определенным функциям на мобильных устройствах. Вот почему у вас так много событий инициализации - среда Flex раздувается избыточными или очень похожими классами, функциями и т. Д.

0 голосов
/ 06 марта 2013

У Android есть жизненный цикл (http://developer.android.com/training/basics/activity-lifecycle/starting.html)), и я думаю, что именно поэтому эти события не запускаются каждый раз, когда вы «открываете» приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...