Firefox OS警报唤醒已关闭的应用程序

时间:2014-07-08 13:10:03

标签: javascript background alarm foreground firefox-os

查看文档,看起来警报api可用于在特定时间重新启动应用程序

我以这种方式更改了样板示例中的代码

    // Alarm API
var alarmDate = new Date("Jul 8, 2014 19:35:00"),
    addAlarm = document.querySelector("#add-alarm"),
    alarmDisplay = document.querySelector("#alarm-display");
if (addAlarm) {
    addAlarm.onclick = function () {
        var alarm = navigator.mozAlarms.add(alarmDate, "honorTimezone", {
            "optionalData" : "I am data"
        });

        alarm.onsuccess = function () {

       var request = window.navigator.mozApps.getSelf();
   request.onsuccess = function() {
    navigator.mozSetMessageHandler("alarm", function (mozAlarm) { 
      request.result.launch();
      alert("alarm fired: " + JSON.stringify(mozAlarm.data)); 
    });
};

request.onerror = function() {
     alert("Error: " + request.error.name);
 };
};

代码似乎只在应用程序运行时启动应用程序(即使在后台运行)但是如果应用程序关闭则不会。

这是预期的行为吗?有没有办法重新启动已关闭的应用程序?

是否可以在前台启动应用程序并使其解锁屏幕?

由于

更新 正如澄清一样,当系统内存负载需要杀死应用程序时,会出现问题。 Android提供了一种安排应用程序重启的方法(而iOS,afaik,不...)。 如果应用程序可以在需要时重新启动,那将非常有用。 这也节省了很多电池......

1 个答案:

答案 0 :(得分:2)

您的代码错误:setMessageHandler是在onsuccess的{​​{1}}处理程序中创建的。警报触发时不会执行该代码。您需要始终在应用启动时添加侦听器。

这是一些添加和响应警报的简单代码(来自app-days-dhaka)。

mozAlarms.add

打开应用程序(这将设置闹钟),然后立即关闭应用程序(通过长按主页)。 30秒后,应用程序将自动重新打开。

相关问题