我正在构建一个使用 Kotlin AccessibilityService 的 Flutter 应用程序。

当前问题:

应用程序包含一个 ON/OFF 切换开关。

切换应该控制是否执行 AccessibilityService 的自动化逻辑。

切换状态存储在 SharedPreferences 中使用键 assistant_on。

Flutter 更新值并通过 MethodChannel 将状态发送给 Android。

Flutter:

await prefs.setBool("assistant_on", val);
await platform.invokeMethod( "setServiceState", {"enabled": val}, );

Android (MainActivity):

"setServiceState" ->
val enabled = call.argument<Boolean>("enabled") ?: false
val prefs = getSharedPreferences( "AutoAcceptPrefs", Context.MODE_PRIVATE )
prefs.edit()
.putBoolean("assistant_on", enabled)
.apply()
result.success(true)

AccessibilityService:

val prefs = getSharedPreferences( "AutoAcceptPrefs", Context.MODE_PRIVATE )
val enabled = prefs.getBoolean("assistant_on", false)
Log.d(TAG, "STATUS -> $enabled")
if (!enabled) return // automation logic

观察到的行为:

Flutter UI 中的 ON/OFF 切换状态正确更新。

授予了访问性权限。

授予了通知权限。

AccessibilityService 总是读取 false。

native MethodChannel 回调似乎没有被触发。

问题:

Flutter、SharedPreferences、MethodChannel 通信和运行 AccessibilityService 之间的同步失败最可能的原因是什么?保持服务状态与 Flutter UI 同步的推荐实现模式是什么?