我一直在尝试在离子上输入暂停模式时尝试做某事,日志在暂停和恢复时起作用,但在暂停上,我想调用一个服务,该服务可以节省后端。该应用的状态(如果其背景与否,问题都在于呼叫需要更多的时间,以便呼叫将永远待定,是否有一种方法可以延迟DE应用程序像Iondidleav一样离开,但对于整个应用程序或使用Angular Lifecycle,但NGDESTROY不起作用,我只需要更多的时间,因此呼叫到达后端以保存数据
platform.ready().then(() => {
if (platform.is('ios')) {
// document.addEventListener('resign', this.onPause, false);
// document.addEventListener('active', this.onResume, false);
document.addEventListener("pause", function() {
// make a call from service will be pending forever
console.log("paused")
}, false);
document.addEventListener("resume", function() {
// not firing
console.log("resumed")
}, false);
} else {
platform.pause.subscribe(() => this.onPause());
platform.resume.subscribe(() => this.onResume());
}
});
我想您可以使用BackgroundMode
。链接的文档适用于离子4,但是如果您使用的是离子3,可以在此处找到的文档。
,只要应用程序在暂停时,您就不需要运行背景模式,您只需等到请求完成或错误。因此,请按照文档中有关如何安装它的步骤进行操作。
import { BackgroundMode } from '@ionic-native/background-mode/ngx';
并将其标记在模块中的提供商数组中。也将其导入您的组件并将其注入构造函数,例如backgroundMode
然后只使用您的pause
函数:
document.addEventListener("pause", () => {
this.backgroundMode.enable(); // enable it!
this.myService.doSomething().pipe(
// disable when request completes/errors
finalize(() => this.backgroundMode.disable())
)
.subscribe(() => console.log('Yaaaay, successful!'))
}, false);