我正在使用NSWorkspaceDidActivateApplicationNotification和NSWorkspaceDidLaunchApplicationNotification通知来了解用户正在与哪个应用进行交互。
问题是,如果应用程序刚刚打开并仍在启动,我首先会收到激活通知,然后很快就会收到启动通知。
有没有办法知道在激活方法中应用程序仍在启动但尚未准备好使用? (仍然在码头里弹跳)
我看到apple的ichat示例项目不使用上述方法,而只是监听启动通知。然后,它使用kAXApplicationActivatedNotification将AXObserver添加到应用程序。这是首选方式吗? (还有NSRunningApplications将观察者添加到所有已加载的应用程序中)。
我想继续使用简单的简单NSNotifications,因为我认为它可能会减少内存消耗。 (无需为每个加载的应用程序保留一个观察者)。
答案 0 :(得分:3)
检查NSWorkspaceDidActivateApplicationNotification的userinfo中传递的NSRunningApplication对象
NSRunningApplication *app = [note.userInfo objectForKey:NSWorkspaceApplicationKey];
if(app.isFinishedLaunching)
NSLog(@"up");