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

     */ 
    protected function deactivateHandler(event:Event):void
    {
        // Check if the application state should be persisted 
        if (persistNavigatorState)
        {

        // 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);
        NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, activateHandler);
    }
    
    /**
     *  @private
     *  Adds listeners for the deactivate event.
     */ 
    private function addDeactivateListeners():void
    {
        // The application listens for deactivate and exiting events to determine when
        // the persistenceManager should save its state to disk.  When the application
        // is being simulated in ADL on desktop, we don't want to listen for deactivate
        // because that event is dispatched whenever the window loses focus.  This
        // could cause persistence to run when a developer doesn't expect it to.  
        // So the DEACTIVATE event is ignored on desktop machines.
        var os:String = Capabilities.os;
        
        // TODO (chiedozi): If the framework ever supports Windows Mobile, we'll need to update this check.
        var runningOnDesktop:Boolean = (os.indexOf("Windows") != -1 || os.indexOf("Mac OS") != -1);
        if (!runningOnDesktop)
            NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, deactivateHandler);
        
        NativeApplication.nativeApplication.addEventListener(Event.EXITING, deactivateHandler);
    }
    
    /**
     *  @private
     *  Remove listeners for the deactivate and exiting events.
     */ 
    private function removeDeactivateListeners():void
    {
        var os:String = Capabilities.os;
        
        // TODO (chiedozi): If the framework ever supports Windows Mobile, we'll need to update this check.
        var runningOnDesktop:Boolean = (os.indexOf("Windows") != -1 || os.indexOf("Mac OS") != -1);
        if (!runningOnDesktop)
            NativeApplication.nativeApplication.removeEventListener(Event.DEACTIVATE, deactivateHandler);
        
        NativeApplication.nativeApplication.removeEventListener(Event.EXITING, deactivateHandler);
    }
    
    /**
