Tony Homer created CB-11292:
-------------------------------

             Summary: calling loadUrl more than once breaks messageChannel
                 Key: CB-11292
                 URL: https://issues.apache.org/jira/browse/CB-11292
             Project: Apache Cordova
          Issue Type: Bug
          Components: Android
            Reporter: Tony Homer


CordovaWebViewImpl.sendJavascriptEvent caches a reference to the CoreAndroid 
plugin instance. This plugin manages Cordova's messageChannel. One of the 
things messageChannel is used for is sending system events from native to JS, 
for example backbutton events.

By default, CordovaWebViewImpl.loadUrl unloads all plugins. This has the side 
effect of rendering CordovaWebViewImpl's cached instance of CoreAndroid stale. 
That is, a new instance is created and bound to a new messageChannel callback.

After this happens, when CordovaWebViewImpl sends messages to JS, the callback 
id has changed and the messages are not handled.

There are at least 2 approaches that should fix this.
1. (tested) do not cache the CoreAndroid instance. If 
CordovaWebViewImpl.sendJavascriptEvent gets the reference from PluginManager 
every time, it will not become stale.
2. (not tested, but better encapsulated) when plugins are recreated, clear the 
cached reference



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to