[ 
https://issues.apache.org/jira/browse/CB-8383?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15230705#comment-15230705
 ] 

Git Rubb edited comment on CB-8383 at 4/7/16 6:12 PM:
------------------------------------------------------

This seems like a big issue, anyone know how to bring more attention to this 
bug?

Added a delay which seems to work. Added a pull request to get some attention 
and possibly a better fix. 
https://github.com/apache/cordova-android/pull/288


was (Author: gitrubb):
This seems like a big issue, anyone know how to bring more attention to this 
bug?

> pause event don't fire when 'KeepRunning' is false
> --------------------------------------------------
>
>                 Key: CB-8383
>                 URL: https://issues.apache.org/jira/browse/CB-8383
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android
>    Affects Versions: Master, 3.5.0, 4.0.0, 4.1.3
>         Environment: Mac osx 10.9
>            Reporter: hugefactory
>              Labels: easyfix
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> Under Android, when a project use 'KeepRunning=false' in the config.xml file, 
> the 'pause' event in javascript don't fire when application go to background. 
> Next, 'pause' event fire when 'resume' is call and when the application 
> resume.
> The problem is in 'CordovaWebView.java' in the 'handlePause' method :
> public void handlePause(boolean keepRunning) {
>         LOG.d(TAG, "Handle the pause");
>         // Send pause event to JavaScript
>         
> this.loadUrl("javascript:try{cordova.fireDocumentEvent('pause');}catch(e){console.log('exception
>  firing pause event from native');};");
>         // Forward to plugins
>         if (this.pluginManager != null) {
>             this.pluginManager.onPause(keepRunning);
>         }
>         // If app doesn't want to run in background
>         if (!keepRunning) {
>             // Pause JavaScript timers (including setInterval)
>             this.pauseTimers();
>         }
>         paused = true;
>    
>     }
> As you can see, 'pauseTimers()' is call immediatly when we choose 
> 'KeepRunning' false.
> According to the Android documentation, 'pauseTimer()' stop all javascript 
> activity....then the 'pause' javascript callback is not execute (it's execute 
> after, when the 'resumeTimers()' is call and the application resume.
> I suggest to delay the 'pauseTimers()' for 1 or 2 sec. Then the javascript 
> 'pause' can execute before the application is really stop :
> //OLD       
>      //this.pauseTimers();
> //NEW
>             final Handler handler = new Handler();
>             handler.postDelayed(new Runnable() {
>               @Override
>               public void run() {
>                 LOG.d(TAG, "Handle the pauseTimers");
>                 pauseTimers();
>               }
>             }, 1000);
>         }
> Thanks.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to