     private function deviceKeyUpHandler(event:KeyboardEvent):void
     {
         var key:uint = event.keyCode;
-        
-        if (key == Keyboard.BACK && canCancelBackKeyBehavior)
+
+        // If preventDefault() wasn't called on the initial keyDown event
+        // and the application thinks it can cancel the native back behavior,
+        // call the backKeyHandler() method.  Otherwise, the runtime will
+        // handle the back key function.
+        
+        // The backKeyEventPreventDefaulted key is always set in the
+        // deviceKeyDownHandler method and so doesn't need to be reset.
+        if (key == Keyboard.BACK && !backKeyEventPreventDefaulted && canCancelBackKeyBehavior)
             backKeyHandler();
     }
     

    {
        super();
    }
    
    //--------------------------------------------------------------------------
    //

        
        // We want to prevent the default down behavior for back key if 
        // the navigator has a view to pop back to
        if (key == Keyboard.BACK)
        {
            backKeyEventPreventDefaulted = event.isDefaultPrevented();
            
            if (canCancelBackKeyBehavior)
                event.preventDefault();
        }
    }
    
    /**
