어떠한 앱이든 실행 중 전화가 오면,  실행중인 앱은 차단됩니다.   일반적으로는 사용자들은 차단된 앱은 다시실행되고, 예전상태 그대로 복구될꺼라 생각합니다. 이를 위해서 유지메커니즘(persistence mechanism)은  이러한것을 가능하게 하는데,  Flex프레임워크에서는 두가지 방법을 제공하고 있습니다.  

 

1. 메모리(In-memory persistence)상에 view상태를 저장하는 방법

2. 세션(Session persistence)을 이용해 상태를 저장하는 방법

 

실행되는 앱은 Mobile OS에 의해 언제든 종료가 가능하므로, 세션유지를 시키는 것은 매우 중요한 요소입니다.

 

1. In-memory persistence

 

Flex모바일 앱에서 화면에 보여지는 컨테이너 개념인 View는 data라는 속성으로 메모리상에 상태를 유지시킬 수 있습니다. 섹션이 바뀔 때, 현재 View의 data는 자동으로 저장되지만, 새로운 View가 ViewNavigator스택 메모리상에 올라가게 되는 경우는 현재의 view는 파괴됩니다. data 속성은 view가 다시 활성화 되면 예전의 data속성을 복구시킬 수 있습니다. 따라서 data속성을 사용하면 실행중 상태정보를 유지시킬 수 있습니다.

 

 

2. Session persistence

 

In-memory persistence가 앱이 실행 중, view사이의 상태에따라 data를 유지시키는 방법이라고 하면, Session persistence는 앱의 종료후에도 상태를 저장할 수 있습니다.   ViewNavigatorApplication ,  TabbedViewNavigatorApplication 컨테이너는 persistNavigatorState라는 속성이 있는데, 이 값은 true로 주면 상태를 유지할 수 있습니다. 기본값은 false로 설정되어 있습니다.  persistNavigatorState을 true로 주면 FxAppCache라는 캐시영역에 로컬공유객체(local shared object)가 저장됩니다. 로컬공유객체에 더 많은 정보를 담고 싶으시면  spark.managers.PersistenceManager의 메소드를 이용하시면 됩니다.

 

ViewNavigator session persistence

ViewNavigator컨테이너는 앱이 종료될 때에도 view스택의 상태를 저장함으로써 세션을 유지할 수 있습니다. 또한 현재view의 Data또한 저장이 가능합니다.  앱이 재실행될 때, ViewNavigator의 스택은 다시 복구가 되면서 종료되는 시점에서의 화면을 그대로 보실 수 있습니다. 왜냐하면 스택은 각 View에 대한 Data를 포함하고 있기때문에 view가 활성화 될때 다시 복구될 수 있습니다.

 

TabbedViewNavigator session persistence

TabbedViewNavigator 컨테이너에서의 세션유지는 종료되는 시점에서의 선택되어진 탭을 저장하고 있습니다. 탭 역시 ViewNavigator과 같이, view스택에 현재view의 Data와 함께 현재 view의 상태를 저장합니다.  따라서 앱이 재실행 될 때, 종료되는 시점에서의 활성화 된 탭과 연관되어있는 ViewNavigator가 복구됩니다.  여기서 주의하실점은 TabbedViewNavigatorApplication컨테이너로 정의된 앱의 경우 오직 현재의 View만 저장이 됩니다. 따라서 선택되어지지 않은 다른 View들은 저장이 안됩니다.

 

Session persistence data representation

Flex에서의 사용되는 persistence mechanism은 암호화 되지 않습니다. 그러므로 저장되어 있는 data는 다른 프로그램이나 사용자로부터 해킹당할수도 있습니다. 따라서 개인정보나 보안이 필요한 Data는 이 메커니즘을 사용하면 안됩니다. 보안된 자체 persistence manager를 선택적으로 사용할 수는 있습니다. 여기에 대한 더 자세한 정보는 Customize the persistence mechanism로 가시면 됩니다.

 

참고 : Enable persistence in a mobile application

AND