在Firefox OS上实现服务

时间:2014-05-22 11:48:06

标签: firefox mozilla firefox-os

我对 Firefox OS 非常陌生。目前,我正在努力实施某种在后台监听geolocation更新的服务。 如果同时运行的应用程序很多,我的应用程序似乎已被杀死。在使用 App Manager 进行调试时,它会以静默方式断开连接。

我尝试requestWakeLock('cpu')和使用工人(如this thread中提出的那样),但没有成功。 后台服务API尚未实施,但仅适用于经过认证的应用程序。

我知道有一些非认证的应用程序,例如ConnectA2,它们始终保持活跃,所以必须有办法。

有人可以给我一个提示吗?

2 个答案:

答案 0 :(得分:1)

Firefox OS无法为您提供在后台有意运行服务的方式,因为我们定位的设备类(例如,128MB设备)无法支持在后台不断运行应用程序。

但是,有其他方法可以实现这些服务。例如,您可以使用mozAlarm API以便按特定时间间隔唤醒应用程序,或者您可以使用SimplePush API来允许您在远程服务器启动事件时通知您的应用程序。

答案 1 :(得分:0)

您可以使用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);
}