【问题标题】:Implement service on Firefox OS在 Firefox OS 上实现服务
【发布时间】:2014-05-22 11:48:05
【问题描述】:
我对 Firefox OS 还是很陌生。目前,我正在努力实现某种在后台侦听geolocation 更新的服务。
如果有很多应用程序同时运行,我的似乎被杀死了。在使用 App Manager 进行调试时,它会静默断开连接。
我尝试了 requestWakeLock('cpu') 和使用 Worker(如 this thread 中所建议的那样)但没有成功。
后台服务 API 尚未实现,仅适用于经过认证的应用。
我知道有像ConnectA2 这样的未经认证的应用程序一直保持活跃,所以必须有办法。
谁能给我一个提示?
【问题讨论】:
标签:
firefox
mozilla
firefox-os
【解决方案1】:
Firefox OS 不会故意为您提供在后台运行服务的方法,因为我们所针对的设备的类(例如,128MB 设备)将无法支持在后台持续运行应用程序背景。
不过,还有其他实现这些服务的方法。例如,您可以使用mozAlarm API 以在特定时间间隔唤醒您的应用程序,或者您可以使用SimplePush API 在远程服务器启动事件时通知您的应用程序。
【解决方案2】:
您可以使用Alarm API 来防止您的应用在后台被杀死。
闹钟会以固定的时间间隔唤醒应用。
var alarmId = 0;
function setAlarm() {
function onAlarmAdded() {
alarmId = request.result;
}
var alarmDate = new Date(Date.now() + (60 * 1000)); // 60 seconds later
var request = navigator.mozAlarms.add(alarmDate, "ignoreTimezone");
request.onsuccess = onAlarmAdded;
}
function setHandler() {
function onAlarm(mozAlarm) {
// set next alarm
setAlarm();
}
navigator.mozSetMessageHandler("alarm", onAlarm);
}
function startAlarm() {
setHandler();
setAlarm();
}
function stopAlarm() {
navigator.mozAlarms.remove(alarmId);
}