第一種, 全局鎖javascript
/* * @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死循環java
/* * @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);
複製代碼
部份內容來自網絡 本教程僅用於學習, 禁止用於其餘用途android