fix(inrt): duplicate script executions
This commit is contained in:
@@ -34,6 +34,7 @@ public class AutoJs extends com.stardust.autojs.AutoJs {
|
|||||||
|
|
||||||
private AutoJs(Application application) {
|
private AutoJs(Application application) {
|
||||||
super(application);
|
super(application);
|
||||||
|
getScriptEngineService().registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -11,6 +11,7 @@ import com.stardust.auojs.inrt.LogActivity;
|
|||||||
import com.stardust.auojs.inrt.Pref;
|
import com.stardust.auojs.inrt.Pref;
|
||||||
import com.stardust.auojs.inrt.autojs.AutoJs;
|
import com.stardust.auojs.inrt.autojs.AutoJs;
|
||||||
import com.stardust.autojs.execution.ExecutionConfig;
|
import com.stardust.autojs.execution.ExecutionConfig;
|
||||||
|
import com.stardust.autojs.execution.ScriptExecution;
|
||||||
import com.stardust.autojs.project.ProjectConfig;
|
import com.stardust.autojs.project.ProjectConfig;
|
||||||
import com.stardust.autojs.script.JavaScriptFileSource;
|
import com.stardust.autojs.script.JavaScriptFileSource;
|
||||||
import com.stardust.pio.PFiles;
|
import com.stardust.pio.PFiles;
|
||||||
@@ -29,6 +30,7 @@ public class AssetsProjectLauncher {
|
|||||||
private ProjectConfig mProjectConfig;
|
private ProjectConfig mProjectConfig;
|
||||||
private Context mActivity;
|
private Context mActivity;
|
||||||
private Handler mHandler;
|
private Handler mHandler;
|
||||||
|
private ScriptExecution mScriptExecution;
|
||||||
|
|
||||||
public AssetsProjectLauncher(String projectDir, Context context) {
|
public AssetsProjectLauncher(String projectDir, Context context) {
|
||||||
mAssetsProjectDir = projectDir;
|
mAssetsProjectDir = projectDir;
|
||||||
@@ -62,9 +64,13 @@ public class AssetsProjectLauncher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void runScript() {
|
private void runScript() {
|
||||||
|
if (mScriptExecution != null && mScriptExecution.getEngine() != null &&
|
||||||
|
!mScriptExecution.getEngine().isDestroyed()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
JavaScriptFileSource source = new JavaScriptFileSource("main", mMainScriptFile);
|
JavaScriptFileSource source = new JavaScriptFileSource("main", mMainScriptFile);
|
||||||
AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig()
|
mScriptExecution = AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig()
|
||||||
.executePath(mProjectDir));
|
.executePath(mProjectDir));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
AutoJs.getInstance().getGlobalConsole().error(e);
|
AutoJs.getInstance().getGlobalConsole().error(e);
|
||||||
|
|||||||
@@ -20,4 +20,6 @@
|
|||||||
<string name="summary_dont_show_main_activity">打开应用后直接运行脚本</string>
|
<string name="summary_dont_show_main_activity">打开应用后直接运行脚本</string>
|
||||||
<string name="text_others">其他</string>
|
<string name="text_others">其他</string>
|
||||||
<string name="powered_by_autojs">Powered by Auto.js</string>
|
<string name="powered_by_autojs">Powered by Auto.js</string>
|
||||||
|
<string name="text_execution_finished" formatted="false">\n------------\n[%s]运行结束,用时%f秒</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user