fix: debounce panel back callback registration

This commit is contained in:
7015725
2026-05-22 05:29:30 +08:00
parent c52598bd44
commit 858b1c5f54
3 changed files with 16 additions and 5 deletions

View File

@@ -415,6 +415,17 @@ FloatBallAppWM.prototype.registerPanelPredictiveBack = function(panel, which) {
try { try {
if (!panel) return false; if (!panel) return false;
if (android.os.Build.VERSION.SDK_INT < 33) return false; if (android.os.Build.VERSION.SDK_INT < 33) return false;
// attach listener + post fallback may fire almost together; avoid unregister/register churn and duplicate logs.
try {
var nowReg = Date.now();
var entries0 = this.state.panelBackCallbackEntries || [];
for (var ei0 = 0; ei0 < entries0.length; ei0++) {
var it0 = entries0[ei0];
if (it0 && it0.view === panel && String(it0.which || "") === String(which || "") && (nowReg - Number(it0.registeredAt || 0)) < 300) {
return true;
}
}
} catch(eRegDebounce) {}
this.unregisterPanelPredictiveBack(panel); this.unregisterPanelPredictiveBack(panel);
var dispatcher = null; var dispatcher = null;
try { dispatcher = panel.findOnBackInvokedDispatcher(); } catch (eFind) { dispatcher = null; } try { dispatcher = panel.findOnBackInvokedDispatcher(); } catch (eFind) { dispatcher = null; }
@@ -483,7 +494,7 @@ FloatBallAppWM.prototype.registerPanelPredictiveBack = function(panel, which) {
} catch (ePri) { priority = 0; } } catch (ePri) { priority = 0; }
dispatcher.registerOnBackInvokedCallback(priority, cb); dispatcher.registerOnBackInvokedCallback(priority, cb);
if (!this.state.panelBackCallbackEntries) this.state.panelBackCallbackEntries = []; if (!this.state.panelBackCallbackEntries) this.state.panelBackCallbackEntries = [];
this.state.panelBackCallbackEntries.push({ view: panel, dispatcher: dispatcher, callback: cb, which: String(which || ""), animation: usedAnimation, mode: mode }); this.state.panelBackCallbackEntries.push({ view: panel, dispatcher: dispatcher, callback: cb, which: String(which || ""), animation: usedAnimation, mode: mode, registeredAt: Date.now() });
safeLog(this.L, 'i', "back callback registered which=" + String(which || "") + " mode=" + mode + " priority=" + String(priority)); safeLog(this.L, 'i', "back callback registered which=" + String(which || "") + " mode=" + mode + " priority=" + String(priority));
return true; return true;
} catch (e) { } catch (e) {

View File

@@ -34,8 +34,8 @@
"size": 7938 "size": 7938
}, },
"th_09_animation.js": { "th_09_animation.js": {
"sha256": "56c53d9b8ba4bb9547dd4c939555a10ab1911220ac7b2188db87ec6f4203c326", "sha256": "79e81066da481c8d3a306483a313771fc1058031244f445edb2a618f23dfdbc3",
"size": 40197 "size": 40746
}, },
"th_10_shell.js": { "th_10_shell.js": {
"sha256": "0ed793079c2f6ba7d29f4c0d411705cb72419f45f572cbe37ed32ac16527a8bc", "sha256": "0ed793079c2f6ba7d29f4c0d411705cb72419f45f572cbe37ed32ac16527a8bc",
@@ -68,5 +68,5 @@
}, },
"keyId": "toolhub-targets-2026-rsa3072", "keyId": "toolhub-targets-2026-rsa3072",
"schema": 2, "schema": 2,
"version": 20260521212532 "version": 20260521212917
} }

View File

@@ -1 +1 @@
XzOOqPWRABdrCv/sRx2arVudQsKv9RaTODpYcc/m6v3xaVU2fZCD4oslWZd5QMDthkf7fxkyyLZIo5CGUD3us872ESeFv31MXg+8DRyhv9jQefJouhVokQbkE8kKCojo6OMD9C10gYAhI6Fjm+VGZnyOsMo8qusM2idP1M4afTnVy9jSexcC3Aev50tWJFNuHe+fQLPXL+Elys4z0i56XOhT3BRS+BaxjL0E8Xy3G1vKrKKIeLrKHZ4GJjcsb0O85c7dt3Hf4x5+NkeLOIOuulG5LybzAHREoraOlzQ8tyuGnNJkZmR34mfBG4L0Eq/xx1sTFpMMEHYCwqiTXbe6dsWSanp9EV2/TVczA4zzjb00xYTpqmRBA3gqXEXgZAKfre0qf72DzVA8VdIxjkZ3n/taPrgcoFuIRxEME94oIHkkghwFa0kKygwfgRa8Nm05LnQUsV4wnmtLwixCeX+0GGPVhxrj5tZC9JATR6ElWfTUlTToLOS2ke9iz7IkkoWj J+ucJ2iSqsLOHjiSuiZWkgPHIxPW6L69huPNPmVDNKuWqgBacB4NV4TcroZNqg5vbl/4BWCdOjyfPJkQGH/qbhDUMcyRxgPxNC1WgZ5bIbwnjWuiS+g/70OFjWsHKiMzlTZoa+djEOZeLt4HHCHiLe/KNPDFSPEQvJaUHJY6gltW7tqHRtI3IrU5pyPvMmgDGUF1o/HOScUWPuNnGUgJC75SBFj7rplfBOyOcMzMK5U/bOEeSRBcjJmEH1Rm6bNIoPPU049Ugn90rGUYcZTiG8oLdDn5Jc7iOvyPrtEz80IjTiurO5VVTD2O21GUnjPF7Y70LfzYJ/DOapSGGZYGkJcrmrMsarKakbcFy+/wv0j+yEF9MCgfWWAtIX4TEV25O0/UV2J8Ur2uf7yHhTIuZ23qtyNFW+0psEgPjaqCg101mbiZxUzcdvuYYfqQheqp9nMCwUWDH6zqZS4UKWrb+b+RBDlEauIByIAiiWer19/ViDbvu94bI+ADh/iB5JPi