[ https://issues.apache.org/jira/browse/CB-3534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13685410#comment-13685410 ]
Mike Kwan commented on CB-3534: ------------------------------- Marginal improvement which prevents the retain artificially keeping the object alive: {code} - (void)viewDidLoad { [super viewDidLoad]; [self webView].backgroundColor = [UIColor clearColor]; [self webView].opaque = NO; [self webView].dataDetectorTypes = UIDataDetectorTypeNone; [self flushCordovaBridge]; } /* * This method works around https://issues.apache.org/jira/browse/CB-3534 * As soon as a proper fix is released we need to get rid of this. */ - (void)flushCordovaBridge { __weak BaseViewController *me = self; [me.commandDelegate evalJs:@"cordova.fireDocumentEvent('resign');" scheduledOnRunLoop:NO]; double delayInSeconds = 0.1; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ [me flushCordovaBridge]; }); } {code} > Multiple CDVViewControllers - deviceready not fired and cordova.exec events > queued up till backgrounding > -------------------------------------------------------------------------------------------------------- > > Key: CB-3534 > URL: https://issues.apache.org/jira/browse/CB-3534 > Project: Apache Cordova > Issue Type: Bug > Components: App Hello World, CordovaJS, iOS > Affects Versions: 2.3.0, 2.7.0 > Environment: Reproducible on iPhone/iPad 6.1 Simulator and Device. > Reporter: Mike Kwan > Assignee: Shazron Abdullah > Priority: Critical > Fix For: 2.9.0 > > Attachments: CordovaBug.zip, Screen Shot 2013-05-29 at 13.55.42.png, > Screen Shot 2013-05-29 at 14.31.44.png > > > Minimal example reproducing the problem is attached and set up as follows: > # Custom container view controller split into two halves each containing a > _CDVViewController_ > # Top half loads and after a delay (3000ms) fires a _NSNotification_ > # In response to the _NSNotification_ the top half loads a green page and > the bottom half loads a red page > Both red pages and green pages have an event listener for *deviceready*: > {code} > function onDeviceReady() { > alert('deviceready from XXXXX'); // colour here > cordova.exec(null, null, 'Echo', 'echo', ['hello']); > }; > {code} > {panel:title=Observed > Behaviour|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE} > - _deviceready_ is fired only for the red page (bottom) > - The _cordova.exec_ succeeds for the red page (bottom) > - _deviceready_ is not fired for the green page (top) > {panel} > {panel:title=Expected > Behaviour|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE} > _deviceready_ should be fired for both the green and red page simultaneously > and the _cordova.exec_ events should go through immediately. > {panel} > {panel:title=Extra > Details|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE} > This bug reproduces the first time the app is launched (reset the simulator > to reproduce). On subsequent launches the app behaves as expected. > The _deviceready_ can be triggered by certain events for the top page: > - Pulling down the notification bar > - Backgrounding > If _deviceready_ is triggered by pulling down the notification bar, the > _cordova.exec_ is still not fired for the green page. The _cordova.exec_ > message is queued up and finally does go through when the app is backgrounded. > {panel} > This bug is remarkably similar to the following: > https://issues.apache.org/jira/browse/CB-2094 > Perhaps it is an edge case which was overlooked? This bug reproduces on 2.3.0 > and 2.7.0 - I have not tried other versions yet. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira