NSWorkspaceDidActivateApplicationNotification вызывается до того, как приложение готово к использованию (запущено)
Я использую уведомления NSWorkspaceDidActivateApplicationNotification и NSWorkspaceDidLaunchApplicationNotification, чтобы узнать, с каким приложением взаимодействует пользователь.
Проблема в том, что если приложение только что открылось и все еще запускается, я сначала получаю уведомление об активации, а вскоре после этого уведомление о запуске.
Есть ли способ узнать в методе активации, что приложение все еще запускается и еще не готово к использованию? (Все еще подпрыгивая в доке)
Я вижу, что пример проекта ichat от Apple не использует вышеуказанный подход и вместо этого только слушает уведомления о запуске. Затем он использует kAXApplicationActivationNotification для добавления AXObserver в приложение. Это предпочтительный способ? (А также NSRunningApplications для добавления наблюдателя во все уже загруженные приложения).
Я хотел продолжать использовать просто простые NSNotifications, потому что я думаю, что это может быть менее интенсивным объемом памяти. (Нет необходимости держать наблюдателя рядом с каждым загруженным приложением).
1 ответ
Проверьте объект NSRunningApplication, переданный в userinfo NSWorkspaceDidActivateApplicationNotification
NSRunningApplication *app = [note.userInfo objectForKey:NSWorkspaceApplicationKey];
if(app.isFinishedLaunching)
NSLog(@"up");