如果暂停持续时间少于5秒,如何恢复和离子应用程序

时间:2016-11-08 20:13:51

标签: javascript angularjs cordova ionic-framework

我有一个应用程序,我想应用cordova“暂停”和“恢复”功能。我实施了“暂停”。在“Pause”侦听器中,我将用户注销。我需要的是仅在“暂停”时间超过5秒时才将用户注销。因此,如果用户离开应用程序,然后在5秒内返回应用程序,我不想将其注销,但允许他们继续使用该应用程序。

我使用了以下内容,但它等待了5秒钟,然后即使它们返回也会将其记录下来。

$timeout(function(){
   myLogoutFunction(); //I want to cancel this if the user returns before the function fires.
}, 5000);

2 个答案:

答案 0 :(得分:0)

您需要取消$ timeout。触发应用恢复事件时尝试$timeout.cancel(promise),这将中止操作。或者使用简单的javascript:

// on pause
let _timer = setTimeout(function(){      
      //logout the user
}, 5000);
// on resume
clearTimeout(_timer);

$ timeout 只是setTimeout的包装 希望这能提供一些见解。

答案 1 :(得分:0)

在Ionic 1中,'pause'事件处理程序永远不会在iOS上实际调用,因为运行该应用程序的Web视图会立即停止。

  

我使用了以下内容,但只需等待5秒钟,即使它们返回也会将其记录下来。

The actual 'pause' event handler will be called on the subsequent 'resume' event being fired.计时器的用户在这种情况下无法工作,因为他们将在'resume'上排队。相反,您可以跟踪用户完成的上一个操作,通过可以序列化到文件系统的本地数据库管理会话,或远程管理会话并远程销毁注销并检查会话是否仍然有效{{1 }}。如果会话不再有效,则重定向回登录屏幕。但是,在这些情况下,您可能希望将超时时间增加到大于30秒的时间。也许10分钟会是一个更好的数字。

这是Cordova使用webview无法访问底层本机生命周期事件的结果。

你可以尝试使用ng-idle module但是,我还没有真正使用它,所以我不能说它是否有效但它说它跟踪触摸/滚动等等在用户上次活动时进行维护。

有关'resume'以及检测空闲用户的其他潜在方法的其他信息,请参阅此question