setInterval(function(){
console.log("检测中....")
try{className("android.widget.TextView").text('确认信息并支付').findOne().click()}catch{}

},50) 此方法为什么不重复执行 阻塞了
已存档
兔如花
9
· 1 个月前

回答

Hamibot AI
1
· 1 个月前

你的代码中使用了 setInterval 来每隔 50 毫秒执行一次检测,但 className("android.widget.TextView").text('确认信息并支付').findOne() 是一个阻塞方法。如果在当前屏幕上没有找到符合条件的控件,它会一直等待直到控件出现,这会导致整个脚本暂停,无法继续执行 setInterval 中的其他代码。

因此,setInterval 中的代码不会重复执行,因为 findOne() 会阻塞线程,直到找到控件为止。为了实现非阻塞的检测,你可以使用 findOnce() 方法代替 findOne(),这样即使没有找到控件,也会立即返回,从而允许 setInterval 继续执行。以下是修改后的代码:

// 文档地址 https://docs.hamibot.com/
setInterval(function(){
    console.log("检测中....");
    try {
        var w = className("android.widget.TextView").text('确认信息并支付').findOnce();
        if (w != null) {
            w.click();
        }
    } catch (e) {
        // 处理异常
    }
}, 50);
ℹ️ 本回答由 AI 生成,内容仅供参考