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

vau*_*ham 6 javascript ipad sencha-touch cordova-2.0.0

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

案例1(确定):应用程序未启动.

用户从头开始应用程序.

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

案例2(TODO):该应用程序已启动,但它已不再处于活动状态

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

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

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

mbo*_*kil 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');
}
Run Code Online (Sandbox Code Playgroud)


vau*_*ham 4

一位 ios 应用程序开发人员接受帮助我。他的回答非常适合我,因为它看起来干净且可重复使用。所以我会在这里制作它:

\n\n

“应用程序来到前台”事件可以通过applicationWillEnterForeground事件捕获。\nPhonegap/Cordova 允许通过 Cordova 类调用 javascript 函数。webView对象有一个专门的方法来启动 js 脚本。

\n\n

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

\n\n
- (void)applicationWillEnterForeground:(UIApplication *)application {\n    NSLog(@"applicationWillEnterForeground: %@", self.viewController.webView);\n    [self.viewController.webView stringByEvaluatingJavaScriptFromString:@"notifyForegroundEvent();"];\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在 js 文件根目录中的某个位置添加了 notificationForegroundEvent() 方法:

\n\n
var notifyForegroundEvent = function() {\n  console.log(\'notifyForegroundEvent()\');\n  // Do something here\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

等等\xc3\xa0

\n