I am working on a mobile application that needs to poll a web service on a regular interval (using setInterval). I have made a prototype ba开发者_StackOverflow中文版sed on HTML5, but when the mobile browser goes in the background, javascript execution is suspended.
I looked into creating native apps for iOS and Android. On iOS this can be done by asking for a limited amount of processing time when the application enters background mode. On Android I guess I would have to make a service that is started and stopped from the application.
However, I see that in Safari on iOS5, web workers support is back, and that this has already been supported in the Android browser for a while. This makes me wonder, can I use web workers to run javascript in the mobile browsers when they are in the background?
The answer is no.
Unfortunately background applications with HTML5 technologies is no go for mobile. Not only mobile browsers aggressively suspend the page when it is background, but they also can kill the whole browser (tab) if they feel so. Whether you have or have not web workers does not affect this.
Running even native applications on background is not trivial on these operating systems.
What I suggest you is that
Extract background worker part out of your JS and write it in native language (Java, iOS)
Use Phonegap etc. similar wrapper for your application UI
精彩评论