修复过度释放资源导致部分脚本悬浮窗不可交互的问题

This commit is contained in:
TonyJiangWJ 2020-09-09 00:32:10 +08:00
parent 713abe23a4
commit 54eb93ea9d
5 changed files with 13 additions and 16 deletions

View File

@ -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)

View File

@ -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));
}
}

View File

@ -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;

View File

@ -414,6 +414,7 @@ public class ScriptRuntime {
}
ignoresException(threads::shutDownAll);
ignoresException(events::recycle);
ignoresException(events::destroy);
ignoresException(media::recycle);
ignoresException(loopers::recycle);
ignoresException(() -> {

View File

@ -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