From 54eb93ea9d043aca87291f09c319c4d57439ae88 Mon Sep 17 00:00:00 2001 From: TonyJiangWJ Date: Wed, 9 Sep 2020 00:32:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BF=87=E5=BA=A6=E9=87=8A?= =?UTF-8?q?=E6=94=BE=E8=B5=84=E6=BA=90=E5=AF=BC=E8=87=B4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E6=82=AC=E6=B5=AE=E7=AA=97=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E4=BA=A4=E4=BA=92=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/autojs/autojs/ui/main/MainActivity.java | 2 +- .../org/autojs/autojs/ui/main/task/TaskGroup.java | 5 ++++- .../java/com/stardust/autojs/ScriptEngineService.java | 11 ++++------- .../com/stardust/autojs/runtime/ScriptRuntime.java | 1 + .../java/com/stardust/autojs/runtime/api/Events.java | 10 +++------- 5 files changed, 13 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java index d4ae1622..077126f2 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java @@ -164,7 +164,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega } catch (Exception e) { Log.d(LOG_TAG, "自动设置无障碍失败"); } - if (!autoEnableAccessibility || AccessibilityServiceTool.isAccessibilityServiceEnabled(this)) { + if (!autoEnableAccessibility || !AccessibilityServiceTool.isAccessibilityServiceEnabled(this)) { new NotAskAgainDialog.Builder(this, "MainActivity.accessibility") .title(R.string.text_need_to_enable_accessibility_service) .content(R.string.explain_accessibility_permission) diff --git a/app/src/main/java/org/autojs/autojs/ui/main/task/TaskGroup.java b/app/src/main/java/org/autojs/autojs/ui/main/task/TaskGroup.java index 3fda23d8..aac48ed7 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/task/TaskGroup.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/task/TaskGroup.java @@ -63,7 +63,10 @@ public abstract class TaskGroup implements Parent { for (TimedTask timedTask : timedTasks) { mTasks.add(new Task.PendingTask(timedTask)); } - for (IntentTask intentTask : TimedTaskManager.getInstance().getAllIntentTasksAsList()) { + List intentTasks = Observable.fromIterable(TimedTaskManager.getInstance().getAllIntentTasksAsList()) + .toSortedList((o1, o2) -> o1.getAction().compareTo(o2.getAction())) + .blockingGet(); + for (IntentTask intentTask : intentTasks) { mTasks.add(new Task.PendingTask(intentTask)); } } diff --git a/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java b/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java index 2a5a27c6..ceb38e6d 100644 --- a/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java +++ b/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java @@ -26,9 +26,10 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import java.util.Collection; -import java.util.LinkedHashMap; import java.util.LinkedHashSet; +import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import static com.stardust.autojs.runtime.exception.ScriptInterruptedException.causedByInterrupted; @@ -94,18 +95,14 @@ public class ScriptEngineService { private final ScriptEngineManager mScriptEngineManager; private final EngineLifecycleObserver mEngineLifecycleObserver = new EngineLifecycleObserver() { - private final Object lock = new Object(); - @Override public void onEngineRemove(ScriptEngine engine) { - synchronized (lock) { - mScriptExecutions.remove(engine.getId()); - } + mScriptExecutions.remove(engine.getId()); super.onEngineRemove(engine); } }; private ScriptExecutionObserver mScriptExecutionObserver = new ScriptExecutionObserver(); - private LinkedHashMap mScriptExecutions = new LinkedHashMap<>(); + private Map mScriptExecutions = new ConcurrentHashMap<>(); ScriptEngineService(ScriptEngineServiceBuilder builder) { mUiHandler = builder.mUiHandler; diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java index 7dc9e397..6158c18d 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java @@ -414,6 +414,7 @@ public class ScriptRuntime { } ignoresException(threads::shutDownAll); ignoresException(events::recycle); + ignoresException(events::destroy); ignoresException(media::recycle); ignoresException(loopers::recycle); ignoresException(() -> { diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/api/Events.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/Events.java index ef985790..fd1930a5 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/api/Events.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/Events.java @@ -307,16 +307,12 @@ public class Events extends EventEmitter implements OnKeyListener, TouchObserver service.getGestureEventDispatcher().removeListener(this); } } - if (mLoopers != null) { - mLoopers = null; - } + } + + public void destroy() { if (mScriptRuntime != null) { mScriptRuntime = null; } - if (mBridges != null) { - mBridges = null; - removeAllListeners(); - } } @Override