perf: ignore other a11y services

This commit is contained in:
二刺螈
2026-04-01 17:40:20 +08:00
parent 1e47ef7c96
commit a5ee78e345
2 changed files with 2 additions and 29 deletions

View File

@@ -311,9 +311,6 @@ class MainViewModel : BaseViewModel(), OnSimpleLife {
private val a11yServicesFlow = useEnabledA11yServicesFlow()
val a11yServiceEnabledFlow = useA11yServiceEnabledFlow(a11yServicesFlow)
val hasOtherA11yFlow = a11yServicesFlow.mapNew { list ->
list.any { it != A11yService.a11yCn }
}
val automatorModeFlow = storeFlow.mapNew {
AutomatorModeOption.objects.findOption(it.automatorMode)

View File

@@ -57,11 +57,8 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import li.songe.gkd.MainActivity
import li.songe.gkd.R
import li.songe.gkd.app
import li.songe.gkd.permission.ignoreBatteryOptimizationsState
import li.songe.gkd.permission.requiredPermission
import li.songe.gkd.permission.writeSecureSettingsState
import li.songe.gkd.service.A11yService
import li.songe.gkd.service.StatusService
import li.songe.gkd.service.fixRestartAutomatorService
import li.songe.gkd.shizuku.shizukuContextFlow
@@ -95,7 +92,6 @@ import li.songe.gkd.util.DarkThemeOption
import li.songe.gkd.util.findOption
import li.songe.gkd.util.launchAsFn
import li.songe.gkd.util.mapState
import li.songe.gkd.util.openA11ySettings
import li.songe.gkd.util.openAppDetailsSettings
import li.songe.gkd.util.saveFileToDownloads
import li.songe.gkd.util.shareFile
@@ -555,7 +551,6 @@ private fun BlockA11yDialog(onDismissRequest: () -> Unit) = FullscreenDialog(onD
val statusRunning by StatusService.isRunning.collectAsState()
val shizukuContext by shizukuContextFlow.collectAsState()
val ignoreBatteryOptimizations by ignoreBatteryOptimizationsState.stateFlow.collectAsState()
val hasOtherA11y by mainVm.hasOtherA11yFlow.collectAsState()
val context = LocalActivity.current as MainActivity
Scaffold(
topBar = {
@@ -576,7 +571,7 @@ private fun BlockA11yDialog(onDismissRequest: () -> Unit) = FullscreenDialog(onD
BottomAppBar {
Spacer(modifier = Modifier.weight(1f))
TextButton(
enabled = shizukuContext.ok && statusRunning && ignoreBatteryOptimizations && !hasOtherA11y,
enabled = shizukuContext.ok && statusRunning && ignoreBatteryOptimizations,
onClick = mainVm.viewModelScope.launchAsFn {
onDismissRequest()
delay(200)
@@ -604,7 +599,7 @@ private fun BlockA11yDialog(onDismissRequest: () -> Unit) = FullscreenDialog(onD
verticalArrangement = Arrangement.spacedBy(4.dp)
) {
RequiredTextItem(text = "切换服务会造成短暂触摸卡顿,请自行测试后再编辑白名单")
RequiredTextItem(text = "使用其它无障碍应用导致优化无效,因为无障碍不会被完全关闭")
RequiredTextItem(text = "使用其它无障碍应用可能导致优化无效,可在服务关闭后自行确认")
RequiredTextItem(text = "必须确保服务关闭后的持续后台运行,否则会被系统暂停或结束运行导致重启失败")
}
Spacer(modifier = Modifier.height(16.dp))
@@ -637,25 +632,6 @@ private fun BlockA11yDialog(onDismissRequest: () -> Unit) = FullscreenDialog(onD
requiredPermission(context, ignoreBatteryOptimizationsState)
},
)
RequiredTextItem(
text = "关闭其它应用的无障碍",
enabled = hasOtherA11y,
imageVector = if (!hasOtherA11y) PerfIcon.Check else PerfIcon.ArrowForward,
onClick = {
if (writeSecureSettingsState.updateAndGet()) {
if (A11yService.isRunning.value) {
setOf(A11yService.a11yCn)
} else {
emptySet()
}.let {
app.putSecureA11yServices(it)
}
toast("关闭成功")
} else {
openA11ySettings()
}
},
)
RequiredTextItem(
text = "(可选) 允许自启动",
enabled = true,