You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by "Erik Thomas (JIRA)" <ji...@apache.org> on 2013/01/29 20:33:12 UTC

[jira] [Commented] (FLEX-33371) On Android, changing orientation fires Event.DEACTIVATE and FlexEvent.VIEW_DEACTIVATE events

    [ https://issues.apache.org/jira/browse/FLEX-33371?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13565693#comment-13565693 ] 

Erik Thomas commented on FLEX-33371:
------------------------------------

We've tried for the better part of a day to find a workaround, but we use orientation view states extensively and need to react to orientation changes to invalidate "includeIn" property on containers and components to adjust the layout for the appropriate orientation. On iOS, this is great. On Android, by the time our orientation change event is fired, the app has already deactivated our View and destroyed all the components. 

Unfortunately, we developed our app with two iOS devices but no Android devices. Instead, we tested many Android form factors using simulators. Finally started testing our v1 product on more devices and discovered this problem on devices that doesn't exist in the simulators. 

We also need to know when the user leaves our app so we can unload it because it's highly connected with NetStream/FMS connections, etc., and on Android, because viewDeactive destroys components that trigger Controller initialization, etc., when we lose state, we can't recreate it if the user comes back to the app in the same View they left without tearing it down and putting it all back together again. 

This should be an incredibly simple fix. In the native extension library for Android, when there is simply an orientation change, don't propagate DEACTIVATE and VIEW_DEACTIVATE events to the AIR client.
                
> On Android, changing orientation fires Event.DEACTIVATE and FlexEvent.VIEW_DEACTIVATE events
> --------------------------------------------------------------------------------------------
>
>                 Key: FLEX-33371
>                 URL: https://issues.apache.org/jira/browse/FLEX-33371
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Mobile: MobileApplication
>    Affects Versions: Adobe Flex SDK 4.6 (Release)
>         Environment: Samsung Galaxy Express and Galaxy S III Android Phones, FlashBuilder 4.7 Premium on Windows 7, debugging through USB as well as deployed release builds, iPhone and iPad, but the problem doesn't exist on iOS devices, only Android
>            Reporter: Erik Thomas
>            Priority: Critical
>             Fix For: Adobe Flex SDK 4.6 (Release)
>
>         Attachments: AndroidDeactivateOnOrientationChangeDefect.zip
>
>
> Orientation changes on Android devices always fire the following events in this order:
> ViewNavigatorEvent.VIEW_DEACTIVATE
> Event.DEACTIVATE
> StageOrientationEvent.ORIENTATION_CHANGE
> The first two events are a defect. They must not fire simply because the user changed the orientation of the phone.
> The result of this defect is that we cannot do two very important things:
> 1. Use view state changes to hide/show layouts, using includeIn property on containers and components. On Android, components that are not included for a given state are destroyed yet they have state we want to maintain which is why we don't change Views.
> 2. We cannot know when the user navigates away from our application, for example to press the Home key. We have certain cleanup we must do in our complex connected app that streams FMS data, etc., and cannot keep sockets open for hours or days.
> On iOS, this is not a problem. Only Android has this bug and it's blocking us from releasing our product on Android. iOS does not have this defect.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira