mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-24 21:33:16 +08:00
修复过度释放资源导致部分脚本悬浮窗不可交互的问题
This commit is contained in:
parent
713abe23a4
commit
54eb93ea9d
@ -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)
|
||||
|
||||
@ -63,7 +63,10 @@ public abstract class TaskGroup implements Parent<Task> {
|
||||
for (TimedTask timedTask : timedTasks) {
|
||||
mTasks.add(new Task.PendingTask(timedTask));
|
||||
}
|
||||
for (IntentTask intentTask : TimedTaskManager.getInstance().getAllIntentTasksAsList()) {
|
||||
List<IntentTask> 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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<Integer, ScriptExecution> mScriptExecutions = new LinkedHashMap<>();
|
||||
private Map<Integer, ScriptExecution> mScriptExecutions = new ConcurrentHashMap<>();
|
||||
|
||||
ScriptEngineService(ScriptEngineServiceBuilder builder) {
|
||||
mUiHandler = builder.mUiHandler;
|
||||
|
||||
@ -414,6 +414,7 @@ public class ScriptRuntime {
|
||||
}
|
||||
ignoresException(threads::shutDownAll);
|
||||
ignoresException(events::recycle);
|
||||
ignoresException(events::destroy);
|
||||
ignoresException(media::recycle);
|
||||
ignoresException(loopers::recycle);
|
||||
ignoresException(() -> {
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user