检测应用程序重新聚焦事件

时间:2013-03-14 12:04:06

标签: javascript ipad sencha-touch cordova-2.0.0

每次用户开始使用该应用程序时我都需要知道。

案例1(确定):应用未启动。

用户从头开始启动应用程序。

我在app的bootstrap上添加了一个监听器,我知道它何时启动。

案例2(TODO):该应用已启动但已不再有效

用户从任务栏重新加载应用程序。

我想知道应用程序何时从任务栏传到前台(如alt + tab)。

抓住这个很棘手,因为应用程序仍在运行,我不知道要听哪个事件。事实上,我甚至不知道如何命名这种行为。

3 个答案:

答案 0 :(得分:6)

Cordova中有应用程序恢复和暂停的事件,因此您无需编辑Cordova类文件。以下是我目前在iOS / Android应用中使用的工作代码。

window.onload = function() {  
    //only fired once when app is opened
    document.addEventListener("deviceready", init, false);
    //re-open app when brought to foreground
    document.addEventListener("resume", init, false);
    //trigger when app is sent to background
    document.addEventListener("pause", onPause, false);

}

function init() {
    console.log('device ready or resume fired');
}

答案 1 :(得分:4)

ios-app开发者接受了我的帮助。他的回答非常适合我,因为它看起来很干净,可以重复使用。所以我会在这里制作它:

可以通过 applicationWillEnterForeground 事件捕获“app come to foreground”事件。 Phonegap / Cordova允许通过Cordova类调用javascript函数。 webView 对象有一个专用的方法来启动js脚本。

所以我打开了Projet / Classes / Cordova / AppDelegate.m文件:

- (void)applicationWillEnterForeground:(UIApplication *)application {
    NSLog(@"applicationWillEnterForeground: %@", self.viewController.webView);
    [self.viewController.webView stringByEvaluatingJavaScriptFromString:@"notifyForegroundEvent();"];

}

我在js文件的根目录中添加了notifyForegroundEvent()方法:

var notifyForegroundEvent = function() {
  console.log('notifyForegroundEvent()');
  // Do something here
}

Etvoilà

答案 2 :(得分:2)

正如我在facebook(destkop,而不是手机)上看到的那样,他们检查mousemove以确定收到的聊天消息是否应标记为已读。我知道这不是解决方案,但它可能会指出你的方向。 当你切换到其他应用程序时,我还会检查输入焦点会发生什么。也许它很模糊。