当应用程序在离子后台运行时,Observable无法正常工作吗?

时间:2019-05-02 14:18:22

标签: ionic-framework ionic3 observable publish-subscribe ionic-native

当我登录时,我开始检查可观察的工作,但是当应用程序在后台运行时,它没有执行。我使用的是可观察的,因为每隔5秒钟应刷新一次。似乎它没有在后台运行。任何其他解决方案,每隔1分钟运行一次代码,无论应用程序是在后台还是在前台。提前致谢 ! 成功登录     this.provider.startBackgroundRefreshInterval(); 在服务类别下面添加了代码

startBackgroundRefreshInterval() {
    var refreshInterval = localStore.getPersistedData(App.ISCHECKBOX_KEY);
    this.timerSubscription = Observable.interval(parseInt(refreshInterval))
        .subscribe((val) => {
            console.log("Observable subscribed");
        });
}
 /**
 * unsubscribe subscription
 */
unSubscribeOnehourSubscription() {
    console.log("Observable Unsubscribed");
    this.timerOneHourSubscription.unsubscribe();
}

现在refreshInterval基于复选框值选择

 updateCheckboxList(value:any) {
    this.service.unSubscribeSubscription();
    this.service.startBackgroundRefreshInterval();
  }

应用程序一旦进入后台,可观察到就不会调用 当前refreshInterval选择为1分钟

在离子背景中连续调用functon的其他方法是什么?

1 个答案:

答案 0 :(得分:1)

我目前正在从事同一件事。虽然我不能说我对此一无所知,但这是我到目前为止所发现的。

当您的应用进入后台时,它实际上就进入了睡眠状态。意味着您所指望的所有代码(包括间隔)都不会执行。

以下是我研究过的一些解决方案。

1)如cordova插件https://github.com/transistorsoft/cordova-plugin-background-fetchhttps://ionicframework.com/docs/native/background-fetch所示,BackgroundFetch将在android和ios中尝试每隔大约15分钟运行一次回调(请阅读链接,了解该计时为何重要) )。 2)如此处https://ionicframework.com/docs/native/background-mode所示,BackgroundMode将使您的应用处于您可以控制的“在后台保持活动状态”模式。这样可以确保您的应用程序即使在后台也可以正常运行,但是您可能会发现商店不接受这种做法(尤其是ios商店可能会拒绝它)。

这是我到目前为止发现的。希望对您有所帮助。