6.7.0 - Alpha13 - 新增 engines.myEngine().getStartTime() 方法 (issue #449)
This commit is contained in:
@@ -23,13 +23,14 @@
|
|||||||
"autojs.(restart/exit) 方法, 用于重启或退出 AutoJs6 应用, 并支持应用重启时自动运行其参数指定的脚本 _[`issue #460`](http://issues.autojs6.com/460)_",
|
"autojs.(restart/exit) 方法, 用于重启或退出 AutoJs6 应用, 并支持应用重启时自动运行其参数指定的脚本 _[`issue #460`](http://issues.autojs6.com/460)_",
|
||||||
"UiObject#isShifted 方法, 用于检测控件位置变化 _[`issue #469`](http://issues.autojs6.com/469)_",
|
"UiObject#isShifted 方法, 用于检测控件位置变化 _[`issue #469`](http://issues.autojs6.com/469)_",
|
||||||
"UiObject#snapshot 方法, 用于捕获控件当前状态 _[`issue #469`](http://issues.autojs6.com/469)_",
|
"UiObject#snapshot 方法, 用于捕获控件当前状态 _[`issue #469`](http://issues.autojs6.com/469)_",
|
||||||
|
"engines.myEngine().getStartTime() 方法, 用于获取脚本引擎启动时间戳 _[`issue #449`](http://issues.autojs6.com/449)_",
|
||||||
"crash 全局方法, 用于测试崩溃报告页面",
|
"crash 全局方法, 用于测试崩溃报告页面",
|
||||||
"structuredClone 全局方法, 用于深拷贝 JavaScript 对象 (参阅 [MDN](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/structuredClone))",
|
"structuredClone 全局方法, 用于深拷贝 JavaScript 对象 (参阅 [MDN](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/structuredClone))",
|
||||||
"等价系列选择器 (UiSelector#id/text/...) 及包含系列选择器 (UiSelector#xxxContains) 支持正则表达式参数",
|
"等价系列选择器 (UiSelector#id/text/...) 及包含系列选择器 (UiSelector#xxxContains) 支持正则表达式参数",
|
||||||
"选择器的正则表达式参数支持使用标志 (i, m, s, u)",
|
"选择器的正则表达式参数支持使用标志 (i, m, s, u)",
|
||||||
"正则表达式支持后瞻断言语法 _[`issue #464`](http://issues.autojs6.com/464)_",
|
"正则表达式支持后瞻断言语法 _[`issue #464`](http://issues.autojs6.com/464)_",
|
||||||
"设置页面增加 \"Java 原始类型包装\" 设置选项 _[`issue #435`](http://issues.autojs6.com/435)_",
|
"设置页面增加 \"Java 原始类型包装\" 设置选项 _[`issue #435`](http://issues.autojs6.com/435)_",
|
||||||
"设置页面增加 \"定时任务调度引擎\" 设置选项, 支持 AlarmManager/WorkManager/JobScheduler _[`issue #457`](http://issues.autojs6.com/457)_ _[`issue #388`](http://issues.autojs6.com/388)_ _[`issue #163`](http://issues.autojs6.com/163)_ _[`issue #53`](http://issues.autojs6.com/53)_ _[`issue #21`](http://issues.autojs6.com/21)_",
|
"设置页面增加 \"定时任务调度引擎\" 设置选项, 支持 AlarmManager/WorkManager/JobScheduler _[`issue #457`](http://issues.autojs6.com/457)_ _[`issue #449`](http://issues.autojs6.com/449)_ _[`issue #388`](http://issues.autojs6.com/388)_ _[`issue #163`](http://issues.autojs6.com/163)_ _[`issue #53`](http://issues.autojs6.com/53)_ _[`issue #21`](http://issues.autojs6.com/21)_",
|
||||||
"设置页面增加 \"应用启动器图标\" 设置选项, 支持自适应图标/透明背景图标 _[`issue #405`](http://issues.autojs6.com/405)_",
|
"设置页面增加 \"应用启动器图标\" 设置选项, 支持自适应图标/透明背景图标 _[`issue #405`](http://issues.autojs6.com/405)_",
|
||||||
"设置页面增加 \"重启策略\" 设置选项, 用于设置主页抽屉栏重启按钮是否使用快速重启策略",
|
"设置页面增加 \"重启策略\" 设置选项, 用于设置主页抽屉栏重启按钮是否使用快速重启策略",
|
||||||
"设置页面启动器快捷方式增加 \"插件\" 选项, 用于通过快捷方式跳转到插件中心页面",
|
"设置页面启动器快捷方式增加 \"插件\" 选项, 用于通过快捷方式跳转到插件中心页面",
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
package org.autojs.autojs.engine;
|
package org.autojs.autojs.engine;
|
||||||
|
|
||||||
import androidx.annotation.CallSuper;
|
import androidx.annotation.CallSuper;
|
||||||
|
|
||||||
import org.autojs.autojs.execution.ScriptExecution;
|
import org.autojs.autojs.execution.ScriptExecution;
|
||||||
|
import org.autojs.autojs.execution.ScriptExecutionGlobalListener;
|
||||||
import org.autojs.autojs.script.ScriptSource;
|
import org.autojs.autojs.script.ScriptSource;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@@ -45,10 +46,10 @@ public interface ScriptEngine<S extends ScriptSource> {
|
|||||||
|
|
||||||
Throwable getUncaughtException();
|
Throwable getUncaughtException();
|
||||||
|
|
||||||
void setId(int id);
|
|
||||||
|
|
||||||
int getId();
|
int getId();
|
||||||
|
|
||||||
|
void setId(int id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@@ -59,6 +60,21 @@ public interface ScriptEngine<S extends ScriptSource> {
|
|||||||
*/
|
*/
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
|
default long getStartTime() {
|
||||||
|
try {
|
||||||
|
Field field = ScriptExecutionGlobalListener.class.getDeclaredField("ENGINE_TAG_START_TIME");
|
||||||
|
field.setAccessible(true);
|
||||||
|
String tag = String.valueOf(field.get(null));
|
||||||
|
Object o = getTag(tag);
|
||||||
|
if (o instanceof Long) {
|
||||||
|
return (long) o;
|
||||||
|
}
|
||||||
|
} catch (IllegalAccessException | NoSuchFieldException e) {
|
||||||
|
/* Ignored. */
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
interface OnDestroyListener {
|
interface OnDestroyListener {
|
||||||
void onDestroy(ScriptEngine<? extends ScriptSource> engine);
|
void onDestroy(ScriptEngine<? extends ScriptSource> engine);
|
||||||
}
|
}
|
||||||
@@ -66,10 +82,10 @@ public interface ScriptEngine<S extends ScriptSource> {
|
|||||||
abstract class AbstractScriptEngine<S extends ScriptSource> implements ScriptEngine<S> {
|
abstract class AbstractScriptEngine<S extends ScriptSource> implements ScriptEngine<S> {
|
||||||
|
|
||||||
private final Map<String, Object> mTags = new ConcurrentHashMap<>();
|
private final Map<String, Object> mTags = new ConcurrentHashMap<>();
|
||||||
|
private final AtomicInteger mId = new AtomicInteger(ScriptExecution.NO_ID);
|
||||||
private OnDestroyListener mOnDestroyListener;
|
private OnDestroyListener mOnDestroyListener;
|
||||||
private volatile boolean mDestroyed = false;
|
private volatile boolean mDestroyed = false;
|
||||||
private Throwable mUncaughtException;
|
private Throwable mUncaughtException;
|
||||||
private final AtomicInteger mId = new AtomicInteger(ScriptExecution.NO_ID);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTag(String key, Object value) {
|
public void setTag(String key, Object value) {
|
||||||
@@ -122,13 +138,13 @@ public interface ScriptEngine<S extends ScriptSource> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setId(int id) {
|
public int getId() {
|
||||||
mId.compareAndSet(ScriptExecution.NO_ID, id);
|
return mId.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public void setId(int id) {
|
||||||
return mId.get();
|
mId.compareAndSet(ScriptExecution.NO_ID, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class DestroyListenerSetMoreThanOneException extends SecurityException {
|
private static class DestroyListenerSetMoreThanOneException extends SecurityException {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#Wed Dec 31 17:28:38 CST 2025
|
#Wed Dec 31 20:04:55 CST 2025
|
||||||
BUILD_TIME=1767173318339
|
BUILD_TIME=1767182695685
|
||||||
COMPILE_SDK_VERSION=36
|
COMPILE_SDK_VERSION=36
|
||||||
IMAGE_QUANT_CMAKE_VERSION=3.22.1
|
IMAGE_QUANT_CMAKE_VERSION=3.22.1
|
||||||
IMAGE_QUANT_NDK_VERSION=26.1.10909125
|
IMAGE_QUANT_NDK_VERSION=26.1.10909125
|
||||||
@@ -27,6 +27,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
|
|||||||
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
|
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
|
||||||
TARGET_SDK_VERSION=36
|
TARGET_SDK_VERSION=36
|
||||||
TARGET_SDK_VERSION_INRT=29
|
TARGET_SDK_VERSION_INRT=29
|
||||||
VERSION_BUILD=3571
|
VERSION_BUILD=3572
|
||||||
VERSION_NAME=6.7.0 Alpha13
|
VERSION_NAME=6.7.0 Alpha13
|
||||||
VSCODE_EXT_REQUIRED_VERSION=1.0.8
|
VSCODE_EXT_REQUIRED_VERSION=1.0.8
|
||||||
|
|||||||
Reference in New Issue
Block a user