2

我同时使用 NSWorkspaceDidActivateApplicationNotification 和 NSWorkspaceDidLaunchApplicationNotification 通知来了解用户正在与哪个应用程序进行交互。

问题是,如果一个应用程序刚刚打开并仍在启动,我首先会收到一个激活通知,然后很快就会收到启动通知。

有没有办法在激活方法中知道应用程序仍在启动但尚未准备好使用?(仍在码头弹跳)

我看到苹果的 ichat 示例项目没有使用上述方法,而是只监听启动通知。然后它使用 kAXApplicationActivatedNotification 将 AXObserver 添加到应用程序。这是首选方式吗?(还有 NSRunningApplications 为所有已加载的应用程序添加观察者)。

我想继续使用简单的 NSNotifications,因为我认为它可能会占用更少的内存。(无需为每个加载的应用程序留一个观察者)。

4

1 回答 1

4

检查 NSWorkspaceDidActivateApplicationNotification 的 userinfo 中传入的 NSRunningApplication 对象

NSRunningApplication *app = [note.userInfo objectForKey:NSWorkspaceApplicationKey]; 
if(app.isFinishedLaunching) 
    NSLog(@"up");
于 2013-03-10T14:57:47.813 回答