【问题标题】:How to catch exit app event?如何捕捉退出应用事件?
【发布时间】:2020-03-24 16:53:25
【问题描述】:

喂!我需要在我的 phonegap 应用程序中捕获退出应用程序事件。实际上,如果玩家尝试作弊并使用最小化退出应用程序并退出任务管理器,而他已经开始了一个新的 lvl,我想触发一个looseLife() 函数。如果他正确退出它,按返回按钮就可以正常工作。

我尝试了 onunload 或 onbeforeunload,但只有在我正常关闭应用程序时才会调用这些函数,而不是最小化它并从任务管理器中关闭它。

暂停功能也对我没有帮助,因为如果屏幕被锁定或当用户切换到另一个应用程序并再次返回时,它也会被触发。

应用在任务管理器中最小化关闭时如何捕捉事件?

【问题讨论】:

  • @PaoloBernasconi 我在我的帖子中指定暂停事件对我没有帮助..因为如果我锁定屏幕或者我只是最小化应用程序,它也会被触发......我需要这个事件应用程序被最小化,用户从任务管理器中关闭它!
  • 有人吗?请它对我很重要!我无法想象这个问题没有任何事件或解决方法。
  • 你的平台是什么?你没有在你的帖子里解释。在我以前的应用程序中,我已经用原生代码覆盖了 android 应用程序的结束事件。
  • @jpgrassi 它在 android 上。而且我想使用在线构建...所以我想本地代码会帮助我,因为我只上传 ww 文件夹...

标签: cordova phonegap-plugins phonegap-build cordova-3 cordova-plugins


【解决方案1】:

我发现 window.onbeforeunload 更适合清理资源。可能偏离主题,但我认为 window.onbeforeunload 不会产生任何竞争条件类型问题。

【讨论】:

【解决方案2】:

您可以使用window.onunload 事件。

为我工作就好了。

【讨论】:

    【解决方案3】:

    我认为您无法在用户执行此操作时在任务管理器中捕获您的应用。这就是任务管理器的意义所在。但是,如果人们使用它在游戏中作弊,您可以在内存中设置一个标志,表示他们在游戏中,并让程序取消设置它,他们会正常退出。如果他们开始游戏时仍然设置了 in the game 标志,您就会知道他们已经作弊并可能触发looseLife() 事件?

    【讨论】:

      【解决方案4】:

      使用beforeunload 事件:

      window.addEventListener('beforeunload', function(event) {
        console.log(`do something with the event:`, event);
        // most recommended is to emit socket like this (just for example):
        // socket.emit("exit-app", {access_token});
      });
      

      这应该在应用程序关闭之前发出并运行。 最推荐使用此方法执行操作的方法是使用套接字(例如 Socket.io)向服务器发出。不要使用 HTTP 请求,因为 HTTP 请求等待回调或任何握手,而套接字没有。在这种情况下,最好使用套接字。

      【讨论】:

        猜你喜欢
        • 2012-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-13
        • 2019-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多