在Java中禁用应用程序Nap
我们的Java应用程序将后台文件传输到服务器。当用户希望向服务器添加一组文档并对其他应用程序执行其他操作时,App Nap将变为活动状态,并使用进度条和网络传输速度减慢窗口 一种解决方案是从App Nap中选择退出整个应用程序,但是如果我们可以排除一些Java线程,避免它们被减慢速度,那就太好了 我不知道如何将NSProcessInfo的功能集成到Java中 有人试过从Java做这样的事情吗?有什么想法吗在Java中禁用应用程序Nap,java,macos,osx-mavericks,energy,Java,Macos,Osx Mavericks,Energy,我们的Java应用程序将后台文件传输到服务器。当用户希望向服务器添加一组文档并对其他应用程序执行其他操作时,App Nap将变为活动状态,并使用进度条和网络传输速度减慢窗口 一种解决方案是从App Nap中选择退出整个应用程序,但是如果我们可以排除一些Java线程,避免它们被减慢速度,那就太好了 我不知道如何将NSProcessInfo的功能集成到Java中 有人试过从Java做这样的事情吗?有什么想法吗 谢谢 我是引用的应用程序nap帖子的作者,通过追踪分析发现了这一点。我不熟悉Java开发,
谢谢 我是引用的应用程序nap帖子的作者,通过追踪分析发现了这一点。我不熟悉Java开发,但是下面的链接可以提供一种方法,以推荐的方式访问NSProcessInfo。我很想看看你发现了什么
我是引用的应用程序nap帖子的作者,通过追踪分析发现了这一点。我不熟悉Java开发,但是下面的链接可以提供一种方法,以推荐的方式访问NSProcessInfo。我很想看看你发现了什么 以下类使用来集成来自Java的NSProcessInfo功能
import ca.weblite.objc.Client;
import ca.weblite.objc.Proxy;
/**
* From https://github.com/shannah/Java-Objective-C-Bridge/blob/master/java/test/ca/weblite/objc/NSProcessInfoUtils.java
*/
public class NSProcessInfoUtils {
private final static long NSActivityUserInitiated = (0x00FFFFFFL | (1L << 20));
/**
* To ensure Mac OS X doesn't slow down your app because of App Nap, call this method
* @param reason the reason for allowing the app to work at full speed
* @return the activity id as a Proxy object
*/
public static Proxy beginActivityWithOptions(String reason) {
Client c = Client.getInstance();
Proxy processInfo = c.sendProxy("NSProcessInfo", "processInfo");
return processInfo.sendProxy("beginActivityWithOptions:reason:", NSActivityUserInitiated, reason);
}
/**
* When the activity is finished, to re-enable app napping call this method
* @param activity previously returned by beginActivityWithOptions()
*/
public static void endActivity(Proxy activity) {
if (activity != null) {
Client c = Client.getInstance();
Proxy processInfo = c.sendProxy("NSProcessInfo", "processInfo");
processInfo.send("endActivity:", activity);
}
}
}
导入ca.weblite.objc.Client;
导入ca.weblite.objc.Proxy;
/**
*从https://github.com/shannah/Java-Objective-C-Bridge/blob/master/java/test/ca/weblite/objc/NSProcessInfoUtils.java
*/
公共类NSProcessInfoUtils{
private final static long NSActivityUserInitiated=(0x00FFFFFFL |)(1L以下类使用来集成来自Java的NSProcessInfo功能
import ca.weblite.objc.Client;
import ca.weblite.objc.Proxy;
/**
* From https://github.com/shannah/Java-Objective-C-Bridge/blob/master/java/test/ca/weblite/objc/NSProcessInfoUtils.java
*/
public class NSProcessInfoUtils {
private final static long NSActivityUserInitiated = (0x00FFFFFFL | (1L << 20));
/**
* To ensure Mac OS X doesn't slow down your app because of App Nap, call this method
* @param reason the reason for allowing the app to work at full speed
* @return the activity id as a Proxy object
*/
public static Proxy beginActivityWithOptions(String reason) {
Client c = Client.getInstance();
Proxy processInfo = c.sendProxy("NSProcessInfo", "processInfo");
return processInfo.sendProxy("beginActivityWithOptions:reason:", NSActivityUserInitiated, reason);
}
/**
* When the activity is finished, to re-enable app napping call this method
* @param activity previously returned by beginActivityWithOptions()
*/
public static void endActivity(Proxy activity) {
if (activity != null) {
Client c = Client.getInstance();
Proxy processInfo = c.sendProxy("NSProcessInfo", "processInfo");
processInfo.send("endActivity:", activity);
}
}
}
导入ca.weblite.objc.Client;
导入ca.weblite.objc.Proxy;
/**
*从https://github.com/shannah/Java-Objective-C-Bridge/blob/master/java/test/ca/weblite/objc/NSProcessInfoUtils.java
*/
公共类NSProcessInfoUtils{
私有最终静态长NSACTIVITYUSERINITATED=(0x00FFFFFFL|(1L嗨,我没有回答您的问题,但您能告诉我如何以编程方式禁用AppNap吗?我尝试从终端使用默认命令,但没有效果。对不起,有点晚了。但是,从命令行:谢谢,但我尝试了,但对我的Java应用程序没有效果嗨,我没有回答您的问题,但您能告诉我怎么做吗您是否以编程方式禁用了AppNap。我尝试从终端使用defaults命令,但没有效果。抱歉,有点晚了。但是,从命令行:谢谢,但我尝试了,但对我的Java应用程序无效。我们将很快测试此解决方案,并接受您的答案(如果可行的话!)太好了!我们将很快测试此解决方案,如果有效,我们将接受您的答案!:)