var floatyWin = floaty.window(
<vertical padding="16">
<button id="startBtn" text="开始" bg="#4CAF50" />
<button id="stopBtn" text="停止" bg="#F44336" enabled="false" />
</vertical>
);
// 定义处理函数
var handlers = {
running: false,
start: function () {
if (this.running) return;
this.running = true;
toast('任务开始');
for (var i = 0; i < 3; i++) {
// 点击 "确认信息并支付"
className("android.widget.TextView").text("确认信息并支付").findOne().click();
// 点击 "就是这家"
className("android.widget.TextView").text("就是这家").findOne().click();
// 间隔 1 秒
sleep(500);
}
},
stop: function () {
if (!this.running) return;
this.running = false;
toast('任务停止');
// 停止任务代码
}
};
// 按钮点击事件监听
floatyWin.startBtn.click(function () {
handlers.start();
ui.run(function () {
floatyWin.startBtn.enabled = false;
floatyWin.stopBtn.enabled = true;
});
});
floatyWin.stopBtn.click(function () {
handlers.stop();
ui.run(function () {
floatyWin.startBtn.enabled = true;
floatyWin.stopBtn.enabled = false;
});
});
// 保持悬浮窗不被关闭
setInterval(function () {}, 1000); 这段代码执行起来很卡
回答
你的代码执行卡顿可能是由于在 start
函数中使用了 for
循环,并且在循环中调用了 className("android.widget.TextView").text("确认信息并支付").findOne().click();
和 className("android.widget.TextView").text("就是这家").findOne().click();
,这可能导致性能问题。建议你尝试以下优化:
- 减少循环次数:如果不需要重复执行多次,可以考虑减少循环次数。
- 增加睡眠时间:在每次点击操作后增加适当的睡眠时间,避免过于频繁的操作。
以下是优化后的代码示例:
// 文档地址 https://docs.hamibot.com/
var floatyWin = floaty.window(
<vertical padding="16">
<button id="startBtn" text="开始" bg="#4CAF50" />
<button id="stopBtn" text="停止" bg="#F44336" enabled="false" />
</vertical>
);
// 定义处理函数
var handlers = {
running: false,
start: function () {
if (this.running) return;
this.running = true;
toast('任务开始');
// 点击 "确认信息并支付"
className("android.widget.TextView").text("确认信息并支付").findOne().click();
// 点击 "就是这家"
className("android.widget.TextView").text("就是这家").findOne().click();
// 间隔 1 秒
sleep(500);
// 如果需要重复执行,可以使用定时器
// setInterval(function () {
// // 点击 "确认信息并支付"
// className("android.widget.TextView").text("确认信息并支付").findOne().click();
// // 点击 "就是这家"
// className("android.widget.TextView").text("就是这家").findOne().click();
// // 间隔 1 秒
// sleep(500);
// }, 1000);
},
stop: function () {
if (!this.running) return;
this.running = false;
toast('任务停止');
// 停止任务代码
}
};
// 按钮点击事件监听
floatyWin.startBtn.click(function () {
handlers.start();
ui.run(function () {
floatyWin.startBtn.enabled = false;
floatyWin.stopBtn.enabled = true;
});
});
floatyWin.stopBtn.click(function () {
handlers.stop();
ui.run(function () {
floatyWin.startBtn.enabled = true;
floatyWin.stopBtn.enabled = false;
});
});
// 保持悬浮窗不被关闭
setInterval(function () {}, 1000);