我从Java启动命令行应用程序。问题是从命令行启动应用程序比从Java启动应用程序要少得多。我会阅读类似于我的各种StackOverflow问题(例如,this one,other)。他们抱怨Java固有的开销,并建议各种方法来减少启动开销。不幸的是,他们没有报告他们是否真的有所改善。
我尝试了几种方法但没有成功。我想听听我做错了什么。我不会为ProcessBuilder提供慢速代码。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.bianca.cityworld2">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".activities.MainActivity">
</activity>
<activity android:name=".activities.AddEditActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Zt-Exec library(在内部使用ProcessBuilder):
NuProcessBuilder pb = new NuProcessBuilder(params);
pb.setCwd(Paths.get(inputFilePath));
ProcessHandler handler = new ProcessHandler();
pb.setProcessListener(handler);
NuProcess process = pb.start();
process.waitFor(1, TimeUnit.MINUTES);
我没有尝试this native lib,因为我看到的问题没有改善。
我只能达到2.476秒而不是从命令行运行869毫秒。这对我的应用非常关键。这些数字适用于Windows 10.我已经在Linux Ubuntu上进行了测试并得到了大约。相同的比例。
有什么建议吗?