目前,当后台进程始终处于非活动状态时,即使我正在等待来自websocket的数据。有没有办法规避这个?该部门的文档根本不清楚(旧文档等)。什么是'新'和正确的方法呢?
我的清单文件:
{
"name": "Media 5",
"manifest_version": 2,
"description": "Html5 media center app for Chrome",
"version": "0.1",
"app": {
"background": {
"persistent": true,
"scripts": ["background.js"]
}
},
"icons": { "16": "small_icon.png", "128": "big_icon.png" },
"sandbox": {
"pages": ["sandbox.html"]
},
"permissions": [
"unlimitedStorage",
"fullscreen",
"notifications",
"webview"
]
}
答案 0 :(得分:3)
有很多方法可以阻止您的活动页面被卸载,包括此处列出的内容:http://developer.chrome.com/extensions/event_pages.html。尝试其中一个。打开消息端口,或设置chrome.alarms警报大约5秒钟的间隔。我不相信它是记录在案的行为,但事件页面通常在10秒不活动后卸载,所以警报应该让你活着。
我已就此提出a bug;如果你使用websockets,我们可能会更聪明地避免卸载。
答案 1 :(得分:1)
让打包的应用程序保持活力的另一件事是拥有一个活跃的回调。因此,例如,您可以使用setTimeout,其超时值为5,以确保应用程序保持活动状态。这只是一种解决方法,应该有更好的方法来协调websockets和打包应用程序的生命周期。
有一个Chromium错误(https://code.google.com/p/chromium/issues/detail?id=204573)跟踪此问题。
作为一个FYI(因为这令人困惑),Chrome目前忽略了“persistent”:true行。打包应用程序(v2)始终设置为“持久”:false。