mirror of
https://github.com/gkd-kit/gkd.git
synced 2024-11-16 11:42:22 +08:00
fix: setGeneratedTime failed (#759)
Some checks failed
Build-Apk / build (push) Has been cancelled
Some checks failed
Build-Apk / build (push) Has been cancelled
This commit is contained in:
parent
db3be41dff
commit
03cdf98f09
|
@ -126,7 +126,6 @@ class A11yService : AccessibilityService(), OnCreate, OnA11yConnected, OnA11yEve
|
|||
val cache = A11yContext(true)
|
||||
|
||||
val targetNode = serviceVal.safeActiveWindow?.let {
|
||||
cache.rootCache = it
|
||||
cache.querySelector(
|
||||
it,
|
||||
selector,
|
||||
|
@ -275,7 +274,11 @@ private fun A11yService.useMatchRule() {
|
|||
if (byForced && !rule.checkForced()) continue
|
||||
lastNode?.let { n ->
|
||||
val refreshOk = (!lastNodeUsed) || (try {
|
||||
n.refresh()
|
||||
val e = n.refresh()
|
||||
if (e) {
|
||||
n.setGeneratedTime()
|
||||
}
|
||||
e
|
||||
} catch (_: Exception) {
|
||||
false
|
||||
})
|
||||
|
|
|
@ -17,19 +17,21 @@ import li.songe.selector.UnknownMemberMethodException
|
|||
import li.songe.selector.UnknownMemberMethodParamsException
|
||||
import li.songe.selector.initDefaultTypeInfo
|
||||
|
||||
// 在主线程调用任意获取新节点或刷新节点的API会阻塞界面导致卡顿
|
||||
|
||||
// 某些应用耗时 554ms
|
||||
val AccessibilityService.safeActiveWindow: AccessibilityNodeInfo?
|
||||
get() = try {
|
||||
// java.lang.SecurityException: Call from user 0 as user -2 without permission INTERACT_ACROSS_USERS or INTERACT_ACROSS_USERS_FULL not allowed.
|
||||
rootInActiveWindow.apply {
|
||||
a11yContext.rootCache = this
|
||||
}?.apply {
|
||||
rootInActiveWindow?.apply {
|
||||
// https://github.com/gkd-kit/gkd/issues/759
|
||||
setGeneratedTime()
|
||||
}
|
||||
// 在主线程调用会阻塞界面导致卡顿
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
null
|
||||
}.apply {
|
||||
a11yContext.rootCache = this
|
||||
}
|
||||
|
||||
val AccessibilityService.safeActiveWindowAppId: String?
|
||||
|
@ -76,8 +78,8 @@ fun AccessibilityNodeInfo.setGeneratedTime() {
|
|||
fun AccessibilityNodeInfo.isExpired(expiryMillis: Long): Boolean {
|
||||
val generatedTime = extras.getLong(A11Y_NODE_TIME_KEY, -1)
|
||||
if (generatedTime == -1L) {
|
||||
setGeneratedTime()
|
||||
return false
|
||||
// https://github.com/gkd-kit/gkd/issues/759
|
||||
return true
|
||||
}
|
||||
return (System.currentTimeMillis() - generatedTime) > expiryMillis
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user