[ https://issues.apache.org/jira/browse/CB-5664?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Joe Bowser updated CB-5664: --------------------------- Priority: Minor (was: Major) > AppCache's "checking" event fired more than once per App startup. > ----------------------------------------------------------------- > > Key: CB-5664 > URL: https://issues.apache.org/jira/browse/CB-5664 > Project: Apache Cordova > Issue Type: Bug > Components: Android > Affects Versions: 3.3.0 > Environment: Android 4.1.2 (SDK 16) > Reporter: Godric Kwok > Priority: Minor > > +Expected Behavior:+ > 1) AppCache is checked only *once* per App startup. > +Observed Behavior:+ > 1) AppCache is checked *multiple times* randomly per App startup. > +Steps to repeat:+ > 0) WebView loading a site with manifest. > 1) console.log() AppCache's "checking" event. > 2) Start App, see "checking" once. > 3) *navigator.app.exitApp()*, then re-launches App. > 4) First relaunch leads to a single "checking" still. > 5) Repeat the relaunch *a few times*. > 6) Then you'll see sometimes it's a double, a triple, or a quadruple (but > never 5x). > 7) Only a *"KILL"* from task switcher will reset these accumulations. > +Unwanted Results:+ > 1) Multiple "checking" triggers multiple subsequent events (download, > updateready, etc...) that renders the App slow. > 2) Multiple "updateready" triggers multiple swapCache()/reload() that renders > the App appeared broken. > +Code Snippet:+ > super.loadUrl( 'http://my.site.with.manifest/' ); > document.addEventListener('deviceready', function(){ > function logEvent(event) { > console.log('appcache: '+event.type); > } > window.applicationCache.addEventListener('checking', logEvent, false); > window.applicationCache.addEventListener('noupdate', logEvent, false); > window.applicationCache.addEventListener('downloading', logEvent, false); > window.applicationCache.addEventListener('progress', logEvent, false); > window.applicationCache.addEventListener('cached', logEvent, false); > window.applicationCache.addEventListener('updateready', logEvent, false); > window.applicationCache.addEventListener('obsolete', logEvent, false); > window.applicationCache.addEventListener('error', logEvent, false); > document.addEventListener('backbutton', function(){ > navigator.app.exitApp(); > }, false); > }, false); > +LogCat pattern:+ > *(1x)* > 12-17 21:11:13.470: I/Web Console(2142): appcache: checking:23 > 12-17 21:11:13.478: I/Web Console(2142): appcache: noupdate:23 > *(1x, but +double+ updateready)* > 12-17 21:11:47.775: I/Web Console(2142): appcache: checking:23 > 12-17 21:11:50.072: I/Web Console(2142): appcache: downloading:23 > 12-17 21:11:50.072: I/Web Console(2142): appcache: progress:23 > 12-17 21:11:50.166: I/Web Console(2142): appcache: progress:23 > 12-17 21:11:50.197: I/Web Console(2142): appcache: progress:23 > 12-17 21:11:50.697: I/Web Console(2142): appcache: progress:23 > 12-17 21:11:50.697: I/Web Console(2142): appcache: progress:23 > 12-17 21:11:50.697: I/Web Console(2142): appcache: updateready:23 > 12-17 21:11:50.697: I/Web Console(2142): appcache: updateready:23 > *(2x)* > 12-17 21:12:27.283: I/Web Console(2142): appcache: checking:23 > 12-17 21:12:27.283: I/Web Console(2142): appcache: checking:23 > 12-17 21:12:29.759: I/Web Console(2142): appcache: noupdate:23 > 12-17 21:12:29.759: I/Web Console(2142): appcache: noupdate:23 > *(2x)* > 12-17 21:12:35.447: I/Web Console(2142): appcache: checking:23 > 12-17 21:12:35.447: I/Web Console(2142): appcache: checking:23 > 12-17 21:12:38.025: I/Web Console(2142): appcache: noupdate:23 > 12-17 21:12:38.025: I/Web Console(2142): appcache: noupdate:23 > *(3x)* > 12-17 21:12:45.322: I/Web Console(2142): appcache: checking:23 > 12-17 21:12:45.322: I/Web Console(2142): appcache: checking:23 > 12-17 21:12:45.322: I/Web Console(2142): appcache: checking:23 > 12-17 21:12:47.345: I/Web Console(2142): appcache: noupdate:23 > 12-17 21:12:47.345: I/Web Console(2142): appcache: noupdate:23 > 12-17 21:12:47.345: I/Web Console(2142): appcache: noupdate:23 -- This message was sent by Atlassian JIRA (v6.1.5#6160)