add timers modules
This commit is contained in:
@@ -54,6 +54,11 @@
|
||||
"type": "markdown",
|
||||
"path":"documentation"
|
||||
},
|
||||
{
|
||||
"title": "定时器",
|
||||
"type": "markdown",
|
||||
"path":"documentation"
|
||||
},
|
||||
{
|
||||
"title": "shell命令",
|
||||
"type": "markdown",
|
||||
|
||||
@@ -110,6 +110,21 @@ events.loop();
|
||||
|
||||
删除所有事件监听函数。
|
||||
|
||||
### events.setTimeout(callback, delay)
|
||||
* callback \<Function\> 回调函数
|
||||
* delay \<Number\> 延迟
|
||||
|
||||
延迟大约delay毫秒后执行callback。该函数只有在events.loop()被使用时才有效。
|
||||
|
||||
返回一个整数表示这个设置的timeout, 可由clearTimeout取消。
|
||||
|
||||
|
||||
### events.clearTimeout(id)
|
||||
|
||||
* id \<Number\> 由 setTimeout() 返回的 ID 值。该值标识要取消的延迟执行回调。
|
||||
|
||||
取消由 setTimeout() 方法设置的 timeout。
|
||||
|
||||
### key事件
|
||||
|
||||
当有按键被按下或弹起时会触发该事件。
|
||||
|
||||
66
app/src/main/assets/help/documentation/定时器.md
Normal file
66
app/src/main/assets/help/documentation/定时器.md
Normal file
@@ -0,0 +1,66 @@
|
||||
timer 模块暴露了一个全局的 API,用于在某个未来时间段调用调度函数。 因为定时器函数是全局的,所以使用该 API 无需调用 timer.***
|
||||
|
||||
Auto.js 中的计时器函数实现了与 Web 浏览器提供的定时器类似的 API,除了它使用了一个不同的内部实现,它是基于 Android Looper-Handler机制构建的。其实现机制与Node.js比较相似。
|
||||
|
||||
不同于Web浏览器和Node.js,在Auto.js中,必须显式地调用loop()函数开始Looper循环才能使所有计时器开始工作。loop()函数是一个"死循环", 在他之后的语句将不会被执行。
|
||||
|
||||
### loop()
|
||||
|
||||
开始Looper循环。使所有定时器工作所必须。
|
||||
注意,何时调用loop不会影响setTimeout等函数的计时,例如:
|
||||
```
|
||||
setTimout(function(){
|
||||
toast("hello");
|
||||
exit();
|
||||
}, 2000);
|
||||
sleep(1000);
|
||||
loop();
|
||||
```
|
||||
这段代码将在运行后大约2秒显示"hello"。
|
||||
|
||||
### setImmediate(callback\[, ...args\])
|
||||
* callback \<Function\> 在 Auto.js 循环的当前回合结束时要调用的函数。
|
||||
* ...args \<any\> 当调用 callback 时要传入的可选参数。
|
||||
|
||||
预定立即执行的 callback,它是在 I/O 事件的回调之后被触发。 返回一个用于 clearImmediate() 的 id。
|
||||
|
||||
当多次调用 setImmediate() 时,callback 函数会按照它们被创建的顺序依次执行。 每次事件循环迭代都会处理整个回调队列。 如果一个立即定时器是被一个正在执行的回调排入队列的,则该定时器直到下一次事件循环迭代才会被触发。
|
||||
|
||||
### setInterval(callback, delay\[, ...args\])
|
||||
* callback \<Function\> 当定时器到点时要调用的函数。
|
||||
* delay \<number\> 调用 callback 之前要等待的毫秒数。
|
||||
* ...args \<any\> 当调用 callback 时要传入的可选参数。
|
||||
|
||||
预定每隔 delay 毫秒重复执行的 callback。 返回一个用于 clearInterval() 的 id。
|
||||
|
||||
当 delay 小于 0 时,delay 会被设为 0。
|
||||
|
||||
### setTimeout(callback, delay\[, ...args\])
|
||||
* callback \<Function\> 当定时器到点时要调用的函数。
|
||||
* delay \<number\> 调用 callback 之前要等待的毫秒数。
|
||||
* ...args \<any\> 当调用 callback 时要传入的可选参数。
|
||||
|
||||
预定在 delay 毫秒之后执行的单次 callback。 返回一个用于 clearTimeout() 的 id。
|
||||
|
||||
callback 可能不会精确地在 delay 毫秒被调用。 Auto.js 不能保证回调被触发的确切时间,也不能保证它们的顺序。 回调会在尽可能接近所指定的时间上调用。
|
||||
|
||||
当 delay 小于 0 时,delay 会被设为 0。
|
||||
|
||||
setImmediate()、setInterval() 和 setTimeout() 方法每次都会返回表示预定的计时器的id。 它们可用于取消定时器并防止触发。
|
||||
|
||||
|
||||
### clearImmediate(id)#
|
||||
* id \<Number\> 一个 setImmediate() 返回的 id。
|
||||
|
||||
取消一个由 setImmediate() 创建的 Immediate 对象。
|
||||
|
||||
### clearInterval(id)#
|
||||
* id \<Number\> 一个 setInterval() 返回的 id。
|
||||
|
||||
取消一个由 setInterval() 创建的 Timeout 对象。
|
||||
|
||||
### clearTimeout(id)
|
||||
* id \<Number\> 一个 setTimeout() 返回的 id。
|
||||
|
||||
取消一个由 setTimeout() 创建的 Timeout 对象。
|
||||
|
||||
@@ -20,7 +20,7 @@ events.on("key", function(code, event){
|
||||
}
|
||||
});
|
||||
|
||||
events.loop();
|
||||
loop();
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,4 +9,4 @@ events.on("touch", function(point){
|
||||
log(point);
|
||||
});
|
||||
|
||||
events.loop();
|
||||
loop();
|
||||
@@ -3,29 +3,22 @@
|
||||
var 长按间隔 = 1500;
|
||||
|
||||
var curPackage = null;
|
||||
var backPressedCount = 0;
|
||||
var backPressed = false;
|
||||
var timeoutId = null;
|
||||
|
||||
events.observeKey();
|
||||
|
||||
events.onKeyDown("back", function(event){
|
||||
curPackage = currentPackage();
|
||||
backPressed = true;
|
||||
backPressedCount++;
|
||||
(function(count){
|
||||
events.setTimeout(function(){
|
||||
if(backPressed && count == backPressedCount){
|
||||
backBackBackBack();
|
||||
}
|
||||
}, 长按间隔);
|
||||
})(backPressedCount);
|
||||
timeoutId = setTimeout(function(){
|
||||
backBackBackBack();
|
||||
}, 长按间隔);
|
||||
});
|
||||
|
||||
events.onKeyUp("back", function(event){
|
||||
backPressed = false;
|
||||
clearTimeout(timeoutId);
|
||||
});
|
||||
|
||||
events.loop();
|
||||
loop();
|
||||
|
||||
function backBackBackBack(){
|
||||
while(curPackage == currentPackage()){
|
||||
|
||||
@@ -15,20 +15,20 @@ events.onKeyDown("volume_up", function(event){
|
||||
});
|
||||
|
||||
events.onKeyDown("volume_down", function(event){
|
||||
stop();
|
||||
toast("程序结束");
|
||||
exit();
|
||||
});
|
||||
|
||||
task();
|
||||
|
||||
events.loop();
|
||||
loop();
|
||||
|
||||
function task1(){
|
||||
toast("任务1运行中,音量下键结束,音量上键切换任务");
|
||||
events.setTimeout(task, interval);
|
||||
setTimeout(task, interval);
|
||||
}
|
||||
|
||||
function task2(){
|
||||
toast("任务2运行中,音量下键结束,音量上键切换任务");
|
||||
events.setTimeout(task, interval);
|
||||
setTimeout(task, interval);
|
||||
}
|
||||
15
app/src/main/assets/sample/定时器/定时执行.js
Normal file
15
app/src/main/assets/sample/定时器/定时执行.js
Normal file
@@ -0,0 +1,15 @@
|
||||
toast("静等20秒,你会看到想看的...");
|
||||
|
||||
var i = 0;
|
||||
|
||||
setTimeout(function(){
|
||||
app.openUrl("http://music.163.com/#/song?id=109628&autoplay=true&market=baiduhd");
|
||||
exit();
|
||||
}, 20 * 1000);
|
||||
|
||||
setInterval(function(){
|
||||
i++;
|
||||
toast(i * 5 + "秒");
|
||||
}, 5000);
|
||||
|
||||
loop();
|
||||
11
app/src/main/assets/sample/定时器/循环执行.js
Normal file
11
app/src/main/assets/sample/定时器/循环执行.js
Normal file
@@ -0,0 +1,11 @@
|
||||
var i = 0;
|
||||
|
||||
setInterval(function(){
|
||||
i++;
|
||||
toast(i * 4 + "秒");
|
||||
if(i == 5){
|
||||
exit();
|
||||
}
|
||||
}, 4000);
|
||||
|
||||
loop();
|
||||
Reference in New Issue
Block a user