繁体   English   中英

启动第二个线程后未调用Objective-C应用程序的kAEGetURL事件处理程序

[英]Objective-C application's kAEGetURL event handler is not called after starting second thread

我有一个Cocoa应用程序(通过JNI)在单独的线程中运行Java虚拟机。 该应用程序注册事件处理程序以处理URL协议myprotocol:// 注册是这样实现的:

NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];

[appleEventManager setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];

handleGetURLEvent是我的处理程序方法。

如果我不启动JVM线程,则调用处理程序。 如果我启动JVM线程,并且在JVM中运行的Java应用程序到达初始化AWT GUI的地步,则不会调用该处理程序。 有任何想法吗?

我已经解决了 Java在加载Swing / AWT之后将自身安装为AppleEvents的目标。 不知道为什么。 它只是替换了我的事件处理程序。 在Java设置事件处理程序之后,我再次设置了事件处理程序(替换Java的事件处理程序)。 我使用以下代码设置事件处理程序:

NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];

[appleEventManager setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM