      */  
     protected function invokeHandler(event:InvokeEvent):void
     {
+        addDeactivateListeners();
+    }
+    
+    
+    /**
+     *  @private
+     *  Adds the deactivate handlers when the application is reactivated.
+     */ 
+    private function activateHandler(event:Event):void
+    {
+        addDeactivateListeners();
     }
     
     /**

        // Add device event listeners
        systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, deviceKeyDownHandler);
        systemManager.stage.addEventListener(KeyboardEvent.KEY_UP, deviceKeyUpHandler);
        systemManager.stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, 
            orientationChangeHandler);
        NativeApplication.nativeApplication.
            addEventListener(InvokeEvent.INVOKE, invokeHandler);
        
        // We need to listen to different events on desktop and mobile because
        // on desktop, the deactivate event is dispatched whenever the window loses
        // focus.  This could cause persistence to run when the developer doesn't
        // expect it to on desktop.  So our solution temporarily is to assume that
        // if the os string contains Windows or Mac, assume we are running on desktop.
        var os:String = Capabilities.os;
        
        // TODO (chiedozi): Try to find a better workaround for this
        if (os.indexOf("Windows") != -1 || os.indexOf("Mac OS") != -1)
            NativeApplication.nativeApplication.
                addEventListener(Event.EXITING, deactivateHandler);
        else
            NativeApplication.nativeApplication.
                addEventListener(Event.DEACTIVATE, deactivateHandler);
    }
    
    /**

     */ 
    protected function deactivateHandler(event:Event):void
    {
        // When the deactiveHandler is called, the application is being
        // suspended or exited.  Remove the deactivate listeners so that
        // we don't persist data multiple times in the case a deactivate
        // and exiting event are received in the same sequence
        removeDeactivateListeners();
        
        // Check if the application state should be persisted 
        if (persistNavigatorState)
        {
