diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/autojs/AutoJs.java b/inrt/src/main/java/com/stardust/auojs/inrt/autojs/AutoJs.java
index fb255594..08095089 100644
--- a/inrt/src/main/java/com/stardust/auojs/inrt/autojs/AutoJs.java
+++ b/inrt/src/main/java/com/stardust/auojs/inrt/autojs/AutoJs.java
@@ -34,6 +34,7 @@ public class AutoJs extends com.stardust.autojs.AutoJs {
private AutoJs(Application application) {
super(application);
+ getScriptEngineService().registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener());
}
diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/autojs/ScriptExecutionGlobalListener.java b/inrt/src/main/java/com/stardust/auojs/inrt/autojs/ScriptExecutionGlobalListener.java
new file mode 100644
index 00000000..678ba0f0
--- /dev/null
+++ b/inrt/src/main/java/com/stardust/auojs/inrt/autojs/ScriptExecutionGlobalListener.java
@@ -0,0 +1,39 @@
+package com.stardust.auojs.inrt.autojs;
+
+import com.stardust.app.GlobalAppContext;
+import com.stardust.auojs.inrt.R;
+import com.stardust.autojs.execution.ScriptExecution;
+import com.stardust.autojs.execution.ScriptExecutionListener;
+
+/**
+ * Created by Stardust on 2017/5/3.
+ */
+
+public class ScriptExecutionGlobalListener implements ScriptExecutionListener {
+ private static final String ENGINE_TAG_START_TIME = "com.stardust.scriptdroid.autojs.Goodbye, World";
+
+ @Override
+ public void onStart(ScriptExecution execution) {
+ execution.getEngine().setTag(ENGINE_TAG_START_TIME, System.currentTimeMillis());
+ }
+
+ @Override
+ public void onSuccess(ScriptExecution execution, Object result) {
+ onFinish(execution);
+ }
+
+ private void onFinish(ScriptExecution execution) {
+ Long millis = (Long) execution.getEngine().getTag(ENGINE_TAG_START_TIME);
+ if (millis == null)
+ return;
+ double seconds = (System.currentTimeMillis() - millis) / 1000.0;
+ AutoJs.getInstance().getScriptEngineService().getGlobalConsole()
+ .verbose(GlobalAppContext.getString(R.string.text_execution_finished), execution.getSource().toString(), seconds);
+ }
+
+ @Override
+ public void onException(ScriptExecution execution, Exception e) {
+ onFinish(execution);
+ }
+
+}
diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java b/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java
index 33d93fe1..cc01165d 100644
--- a/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java
+++ b/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java
@@ -11,6 +11,7 @@ import com.stardust.auojs.inrt.LogActivity;
import com.stardust.auojs.inrt.Pref;
import com.stardust.auojs.inrt.autojs.AutoJs;
import com.stardust.autojs.execution.ExecutionConfig;
+import com.stardust.autojs.execution.ScriptExecution;
import com.stardust.autojs.project.ProjectConfig;
import com.stardust.autojs.script.JavaScriptFileSource;
import com.stardust.pio.PFiles;
@@ -29,6 +30,7 @@ public class AssetsProjectLauncher {
private ProjectConfig mProjectConfig;
private Context mActivity;
private Handler mHandler;
+ private ScriptExecution mScriptExecution;
public AssetsProjectLauncher(String projectDir, Context context) {
mAssetsProjectDir = projectDir;
@@ -62,9 +64,13 @@ public class AssetsProjectLauncher {
}
private void runScript() {
+ if (mScriptExecution != null && mScriptExecution.getEngine() != null &&
+ !mScriptExecution.getEngine().isDestroyed()) {
+ return;
+ }
try {
JavaScriptFileSource source = new JavaScriptFileSource("main", mMainScriptFile);
- AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig()
+ mScriptExecution = AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig()
.executePath(mProjectDir));
} catch (Exception e) {
AutoJs.getInstance().getGlobalConsole().error(e);
diff --git a/inrt/src/main/res/values/strings.xml b/inrt/src/main/res/values/strings.xml
index 16d7fa2f..59d0b15d 100644
--- a/inrt/src/main/res/values/strings.xml
+++ b/inrt/src/main/res/values/strings.xml
@@ -20,4 +20,6 @@
打开应用后直接运行脚本
其他
Powered by Auto.js
+ \n------------\n[%s]运行结束,用时%f秒
+