From 924dfe1e213b3384ef954a600d458ac152580fbd Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sat, 26 Jan 2019 10:06:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E6=97=B6=E5=AF=BC=E8=87=B4ANR=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/autojs/autojs/model/script/Scripts.kt | 4 ++-- .../com/stardust/autojs/engine/ScriptEngine.java | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/autojs/autojs/model/script/Scripts.kt b/app/src/main/java/org/autojs/autojs/model/script/Scripts.kt index f15e7831..5a03e150 100644 --- a/app/src/main/java/org/autojs/autojs/model/script/Scripts.kt +++ b/app/src/main/java/org/autojs/autojs/model/script/Scripts.kt @@ -137,8 +137,8 @@ object Scripts { } @Nullable - fun getRhinoException(e: Throwable?): RhinoException? { - var e = e + fun getRhinoException(throwable: Throwable?): RhinoException? { + var e = throwable while (e != null) { if (e is RhinoException) { return e diff --git a/autojs/src/main/java/com/stardust/autojs/engine/ScriptEngine.java b/autojs/src/main/java/com/stardust/autojs/engine/ScriptEngine.java index bb6c9a68..46312834 100644 --- a/autojs/src/main/java/com/stardust/autojs/engine/ScriptEngine.java +++ b/autojs/src/main/java/com/stardust/autojs/engine/ScriptEngine.java @@ -7,6 +7,7 @@ import com.stardust.autojs.script.ScriptSource; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; /** @@ -68,14 +69,14 @@ public interface ScriptEngine { abstract class AbstractScriptEngine implements ScriptEngine { - private Map mTags = new HashMap<>(); + private Map mTags = new ConcurrentHashMap<>(); private OnDestroyListener mOnDestroyListener; - private boolean mDestroyed = false; + private volatile boolean mDestroyed = false; private Throwable mUncaughtException; private volatile AtomicInteger mId = new AtomicInteger(ScriptExecution.NO_ID); @Override - public synchronized void setTag(String key, Object value) { + public void setTag(String key, Object value) { if (value == null) { mTags.remove(key); } else { @@ -84,22 +85,22 @@ public interface ScriptEngine { } @Override - public synchronized Object getTag(String key) { + public Object getTag(String key) { return mTags.get(key); } @Override - public synchronized boolean isDestroyed() { + public boolean isDestroyed() { return mDestroyed; } @CallSuper @Override - public synchronized void destroy() { - mDestroyed = true; + public void destroy() { if (mOnDestroyListener != null) { mOnDestroyListener.onDestroy(this); } + mDestroyed = true; } public String cwd() {