Android语言编写几个定时器
时间: 2023-08-14 09:02:42 浏览: 73
在Android中,可以使用Java的Timer类和Handler类来实现定时器。
1. 使用Timer类
```
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// 定时任务要执行的操作
}
}, delay, period);
```
其中,delay为延迟时间,period为定时周期,单位均为毫秒。
2. 使用Handler类
```
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// 定时任务要执行的操作
handler.postDelayed(this, period);
}
}, delay);
```
其中,delay为延迟时间,period为定时周期,单位均为毫秒。需要注意的是,使用Handler类实现定时器时,需要在定时任务执行完毕后再次调用postDelayed方法,以实现循环定时。
相关问题
汇编语言编写定时器
下面是使用汇编语言编写定时器的示例程序:
```
.MODEL SMALL ; 定义模型为小模型
.STACK 100H ; 定义栈大小为100H
; 定义常量
TIMER_COUNT EQU 1000 ; 定时器计数值,每1ms中断一次
.DATA
; 定义数据段,这里没有定义任何变量
.CODE
; 定义代码段
MAIN PROC
MOV AX, @DATA ; 将数据段地址赋值给AX寄存器
MOV DS, AX ; 将数据段地址赋值给DS寄存器
; 初始化定时器
MOV AL, 00110110B ; 0011表示选择通道0,0110表示工作模式3(square wave generator)
OUT 043H, AL ; 将控制字写入端口43H
MOV AX, TIMER_COUNT ; 将定时器计数值赋值给AX寄存器
OUT 040H, AL ; 将AX寄存器的值写入端口40H
MOV AL, AH ; 将高8位赋值给低8位
OUT 040H, AL ; 将AL寄存器的值写入端口40H
; 开启中断
MOV AL, 00000011B ; 00000011表示开启中断
OUT 021H, AL ; 将控制字写入端口21H
; 无限循环
LOOP:
NOP ; 等待中断
JMP LOOP ; 跳转到LOOP标签,继续循环
; 程序结束
MOV AH, 4CH ; AH寄存器为4C表示程序结束
INT 21H ; 调用21H中断,结束程序
MAIN ENDP
END MAIN
```
上述程序使用了8253芯片的通道0,工作模式3(square wave generator),每1ms会产生一次中断,可以根据需要修改定时器计数值进行调整。程序中通过向端口40H和端口43H写入控制字和计数值,来初始化8253芯片。同时,通过向端口21H写入控制字,开启8259A中断控制器的中断。在无限循环中,使用NOP指令等待中断,中断时跳转到LOOP标签,继续循环。
用java语言编写一个定时器,每5s打印一个hello world!
以下是用Java编写的定时器代码,每5秒打印一次“Hello World!”:
```java
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Hello World!");
}
};
Timer timer = new Timer();
timer.schedule(task, 0, 5000);
}
}
```
在这个程序中,我们首先创建一个TimerTask对象,它实现了run()方法,该方法会在定时器到达指定的时间时被执行。在run()方法中,我们简单地打印出“Hello World!”。
然后,我们创建一个Timer对象,并调用它的schedule()方法,该方法接受一个TimerTask对象和两个long类型的参数,分别表示任务的延迟时间和重复执行的时间间隔。在这个例子中,我们将延迟时间设置为0,重复执行的时间间隔设置为5000毫秒(即5秒)。这意味着任务将在0秒后开始执行,并且每5秒重复执行一次。