应用关闭前的离子运行功能

Posted

技术标签:

【中文标题】应用关闭前的离子运行功能【英文标题】:Ionic run function before app closes 【发布时间】:2016-05-04 04:08:16 【问题描述】:

我是否可以调用某种函数来监听应用程序是否即将退出、关闭或进入后台。基本上是任何表示“用户已停止使用应用程序”的事件?

我是我的应用程序,我建立了一个“用户日志”,在用户浏览应用程序时跟踪他们。我不想在这些事件发生时不断向服务器发送少量数据,而是想在用户停止使用应用程序之前一次性发送整个批次(再次,这是否意味着完全关闭应用程序,将其发送到背景等)

最后,如果确实存在这样的功能.. 你把那个功能放在哪里?在你的app.js?还是您必须将该侦听器放在应用程序的每个控制器中?

【问题讨论】:

【参考方案1】:

此代码适用于 ionic2 本机应用程序退出和浏览器。在浏览器中,当按下 URL 重新加载按钮或关闭浏览器选项卡时会发生这种情况。

platform.pause.subscribe(e => 
  this.OptionsSave();
);

window.addEventListener('beforeunload', () => 
  this.OptionsSave();
);

【讨论】:

【参考方案2】:

您可以从 Cordova 文档中查看此事件列表:

https://cordova.apache.org/docs/en/5.4.0/cordova/events/events.html

特别是Pause event:

当应用程序进入后台时触发该事件。

document.addEventListener("pause", yourCallbackFunction, false);

【讨论】:

谢谢,你会把这个函数放在哪里? App.js 还是在每个控制器中都有这样的监听器? IMO 你可以在 app.run() 函数内的 app.js 中添加这些事件监听器 这在有人刷出应用的情况下效果很好,但是当我最小化或切换到不同的应用时有没有办法调用函数? 您是否找到上述解决方案,我也需要相同的事件,如果应用程序被用户关闭,则更新数据库中的字段值。 pause 事件也会在应用待机或其他一些导致焦点模糊的操作上运行。您可以在pauseresume 事件中看到很多日志。我猜不存在真正的应用关闭前事件。因为退出不应该被应用程序延迟。它是由操作系统(和用户)控制的。在这种情况下运行代码将是时间紧迫的。

以上是关于应用关闭前的离子运行功能的主要内容,如果未能解决你的问题,请参考以下文章

加载应用程序时的离子调用功能

离子电容器 iOS Firebase 应用程序无法启动 [关闭]

离子 3 中的“运行时错误区域已加载”

如何处理离子应用程序中的强制关闭事件?

使用此命令在移动设备中运行离子应用程序时出错(离子科尔多瓦运行安卓)

尽管成功运行了离子资源命令,离子应用程序图标和闪屏仍显示科尔多瓦默认图标