您的位置:首页 > 移动开发 > Android开发

android中延迟执行某个任务

2014-08-04 11:04 351 查看
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,能实现时刻广播指定意图,一般的简单人物不这么做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: