From 37b3cdbcf567ff3f2a0f30ce3dd7a5b2e3f896b1 Mon Sep 17 00:00:00 2001 From: lateautumn233 Date: Wed, 13 May 2026 20:03:03 +0800 Subject: [PATCH] perf(ui): skip output events in summary listeners - MainHomeFragment.onDaemonEvent: ignore output events - VMEventHandler.onDaemonEvent: short-circuit output before main-thread post - VM stdout/stderr/uart bursts no longer trigger home summary refresh or onVMStateChanged dispatch, fixing main thread saturation during VM boot --- .../java/cn/classfun/droidvm/lib/daemon/VMEventHandler.java | 1 + .../java/cn/classfun/droidvm/ui/main/home/MainHomeFragment.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/app/src/main/java/cn/classfun/droidvm/lib/daemon/VMEventHandler.java b/app/src/main/java/cn/classfun/droidvm/lib/daemon/VMEventHandler.java index 54e1d17..86ad898 100644 --- a/app/src/main/java/cn/classfun/droidvm/lib/daemon/VMEventHandler.java +++ b/app/src/main/java/cn/classfun/droidvm/lib/daemon/VMEventHandler.java @@ -145,6 +145,7 @@ public void onDaemonEvent(@NonNull JSONObject msg) { var data = msg.optJSONObject("data"); if (data == null) return; var event = data.optString("event", ""); + if (event.equals("output")) return; var vmId = UUID.fromString(data.optString("vm_id", "")); var vmName = data.optString("vm_name", ""); var stateStr = data.optString("state", "stopped"); diff --git a/app/src/main/java/cn/classfun/droidvm/ui/main/home/MainHomeFragment.java b/app/src/main/java/cn/classfun/droidvm/ui/main/home/MainHomeFragment.java index 8de6697..12556a4 100644 --- a/app/src/main/java/cn/classfun/droidvm/ui/main/home/MainHomeFragment.java +++ b/app/src/main/java/cn/classfun/droidvm/ui/main/home/MainHomeFragment.java @@ -358,6 +358,8 @@ public void refreshView() { @Override public void onDaemonEvent(JSONObject data) { + var inner = data.optJSONObject("data"); + if (inner != null && "output".equals(inner.optString("event"))) return; refreshView(); }