【问题标题】:Firefox OS alarm to wake up closed appFirefox OS 警报唤醒关闭的应用程序
【发布时间】:2014-07-08 13:10:02
【问题描述】:

查看文档,似乎可以使用警报 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,没有......)。 如果可以在需要时重新启动应用程序,那将很有用。 这也节省了很多电池...

【问题讨论】:

    标签: javascript background alarm foreground firefox-os


    【解决方案1】:

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

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

    var request = navigator.mozAlarms.add(new Date((+new Date()) + 30000), 'ignoreTimezone', {
      type: 'yolo'
    });
    
    console.log('setting to', new Date((+new Date()) + 30000) + '')
    
    request.onsuccess = function() {
      console.log('success');
    }
    
    request.onerror = function() {
      console.error('err');
    }
    
    navigator.mozSetMessageHandler('alarm', function() {
      console.log('alarm');
      launchSelf();
    });
    
    function launchSelf() {
      var request = window.navigator.mozApps.getSelf();
      request.onsuccess = function() {
        if (request.result) {
          request.result.launch();
        }
      };
    }
    

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

    【讨论】:

    • 太棒了!谢谢。这完美且明确地突出了 Firefoxos 作为最容易正确设置此设置的操作系统(至少对于使用 javascript 的人来说)!
    猜你喜欢
    • 2019-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多