我对 Firefox OS 非常陌生。目前,我正在努力实施某种在后台监听geolocation
更新的服务。
如果同时运行的应用程序很多,我的应用程序似乎已被杀死。在使用 App Manager 进行调试时,它会以静默方式断开连接。
我尝试requestWakeLock('cpu')
和使用工人(如this thread中提出的那样),但没有成功。
后台服务API尚未实施,但仅适用于经过认证的应用程序。
我知道有一些非认证的应用程序,例如ConnectA2
,它们始终保持活跃,所以必须有办法。
有人可以给我一个提示吗?
答案 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);
}