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