android App开发在某些情况下需要有延时功能,比如说App首页显示定格3秒,然后自动跳到登录页的情况,这就好比是一个预加载,但是这个预加载可能瞬间就完成了,撑不到3秒钟,这是就要求你做延时处理。
下面有四种方法:
一、延时器
<span style="font-size:14px;">TimerTask task = new TimerTask(){
public void run(){
//execute the task
}
};
Timer timer = new Timer();
timer.schedule(task, delay); </span>
delay的单位是ms
二,线程睡眠
<span style="font-size:14px;"> new Thread(new Runnable(){
public void run(){
Thread.sleep(XXXX);
handler.sendMessage();----告诉主线程执行任务
}
}).start(); </span>
说明用例:
<span style="font-size:14px;"> public void fight(){ /* 与敌人战斗 */
for(int i=1;i<=100;i++){
System.out.println(getName()+":打败第"+i+"个敌人");
try{
sleep(500); //睡眠500毫秒
}catch(InterruptedException e){
throw new RuntimeException(e);
}
}
} </span>
Thread类的sleep(long millis)方法是静态方法,millis参数设定睡眠的时间,以毫秒为单位。
假定某一时刻m1线程获得CPU,开始执行一次for循环,当它执行sleep()方法时,就会放弃CPU并开始睡眠。接着m2线程获得CPU,开始执行一次for循环,当它执行sleep()方法时,就会放弃CPU并开始睡眠。接着m3线程获得CPU,开始执行一次for循环,当它执行sleep()方法时,就会放弃CPU并开始睡眠。假定此时m1线程已经结束睡眠,就会获得CPU,继续执行下一次for循环。
当m1线程结束睡眠,首先转到就绪状态,假如此时CPU正被m2线程占用,那么m1线程不一定立即会运行,而是在可运行池中等待获得CPU。
三,android消息处理
<span style="font-size:14px;">new Handler().postDelayed(new Runnable(){
public void run() {
//execute the task
}
}, delay);</span>
四,利用AlarmManager,能实现时刻广播指定意图,一般的简单人物不这么做。