[ https://issues.apache.org/jira/browse/CB-5037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13931212#comment-13931212 ]
Nathan Smith commented on CB-5037: ---------------------------------- This issue also affects 2.5.0 > Cordova fails to fire deviceready on page reload > ------------------------------------------------ > > Key: CB-5037 > URL: https://issues.apache.org/jira/browse/CB-5037 > Project: Apache Cordova > Issue Type: Bug > Components: iOS > Affects Versions: 3.0.0 > Environment: iOS 5. > Device or Network plugins (any plugin that adds itself as a dependency to the > deviceready event). > Reporter: Luke Terry > Assignee: Andrew Grieve > Fix For: 3.2.0 > > > Reproduction Steps: > # Create a new cordova project for iOS > # Add the Device and Network plugins > # Add a logging plugin of some kind > # Add client code that calls the logging plugin before issuing a > window.location.reload(). In our situation we have lots of logging happening > just before we do a reload. > Expected Results: > The application reloads, successfully invoking the deviceready event. > Actual Results: > The application reloads but is stopped waiting for deviceready. > Cause: > Race condition on request ID reset. > Let the first instance of cordova be instanceA and the second instance of > cordova be instanceB. > # instanceA issues commands that are queued to be handled by the native > bridge. > # instanceA reloads the page. > # The native bridge handles webViewDidStartLoad and resets the largest > request ID to 0. > # The native bridge continues to process the large queue from instanceA > incrementing the largest request ID to X (perhaps the XHR request has come in > after the webViewDidStartLoad is handled?) > # instanceB starts up, > # The Device plugin for instanceB tries to getDeviceInfo, > # The native bridge sees the instanceB request with ID 0 and ignores it > because it is less than request ID X. > # The Device plugin never gets a callback and therefore prevents the > deviceready event from firing. > Possible Solutions: > # Cordova should make an initial XHR request to reset the request ID on the > native bridge. Perhaps "gap_init" instead of "gap_exec". -- This message was sent by Atlassian JIRA (v6.2#6252)