第一种, 全局锁
/*
* @author: 抠脚
*/
"ui";
// 重点是有个全局锁
let myLock = threads.lock();
importClass(android.widget.Toast);
importClass(android.view.Gravity);
ui.layout(
<vertical>
<button id="btn"></button>
</vertical>
);
setInterval(function () {
ui.btn.setText(new Date().getTime() + "");
}, 1000);
for (var i = 0; i < 3; i++) {
ToastShow("i = " + i, 200);
log("i = " + i);
}
function ToastShow(str, time) {
threads.start(function () {
myLock.lock();
myToast = Toast.makeText(context, str, Toast.LENGTH_LONG);
myToast.show();
setTimeout(() => {
myToast.cancel();
myLock.unlock();
}, time || 500);
});
}
第二种, while死循环
/*
* @version: 1.0
* @Date: 2021-08-11 15:15:47
* @LastEditTime: 2021-08-11 16:29:11
* @LastEditors: 牙叔
* @Description: toast快速显示
* @FilePath: \autojs-test\toast快速显示.js
* @名人名言: 牙叔教程 简单易懂
*/
engines.all().map((ScriptEngine) => {
if (engines.myEngine().toString() !== ScriptEngine.toString()) {
ScriptEngine.forceStop();
}
});
importClass(android.widget.Toast);
function ToastManager() {
let dataList = [];
let scope = this;
this.showing = false;
function _toast(data) {
scope.showing = true;
threads.start(function () {
let toast = Toast.makeText(context, data.msg, Toast.LENGTH_SHORT);
toast.show();
setTimeout(function () {
log("要中断了");
toast.cancel();
toast = null;
scope.showing = false;
}, data.t);
});
}
this.add = function (msg, t) {
t = t || 200;
dataList.push({
msg: msg,
t: t,
});
};
threads.start(function () {
while (1) {
if (dataList.length > 0) {
_toast(dataList.shift());
while (1) {
sleep(30);
if (!scope.showing) {
break;
}
}
}
sleep(30);
}
});
}
let toastManager = new ToastManager();
for (var i = 0; i < 10; i++) {
toastManager.add("i = " + i);
sleep(900);
}
setInterval(function () {}, 1000);
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途
网友评论