在Android日常开发中我们经常会有延时执行某个操作的需求,例如我们启动应用的时候,开始呈现一个引导页面,过了两三秒后,自动跳转到主界面;又如为了控制时序,需要延时执行等等。
下面整理下实现延时执行操作的几种方法:
① 使用Handler的postDelayed方法实现延时操作
推荐使用这种方式文章来源:https://www.toymoban.com/news/detail-509193.html
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
/**
*要执行的操作
*/
}
}, 3000);//3秒后执行Runnable中的run方法
new Handler().postDelayed(new Runnable() {
public void run() {
//要执行的任务
}}, 3000);
final int MSG_WHAT = 1;
Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
switch(message.what) {
case MSG_WHAT:
// 更新UI
break;
}
}
};
// 延时3s执行MSG_WHAT
handler.sendEmptyMessageDelayed(MSG_WHAT, 3000);
② 使用线程的休眠实现延时操作
new Thread() {
@Override
public void run() {
super.run();
Thread.sleep(3000);//休眠3秒
/**
* 要执行的操作
*/
}
}.start();
③ 使用Timer定时器
TimerTask task = new TimerTask() {
@Override
public void run() {
// 要执行的操作
}
};
Timer timer = new Timer();
timer.schedule(task, 3000); // 延时3s 执行TimeTask的run方法
timer.schedule(task,3000,5000);//3秒后每隔5秒执行一次
timer.cancel();//销毁
④ AlarmManager.setRepeating()
适合需要一直在后台运行的定时任务,比如每隔5分钟就做一件事。文章来源地址https://www.toymoban.com/news/detail-509193.html
/**
* 一个定时任务
*/
public class AlarmService extends Service {
private static final int INTERVAL = 1 * 60 * 60 * 1000;//1小时
private static final int PENDING_REQUEST = 0;
/**
* 调用Service都会执行到该方法
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//通过AlarmManager定时启动广播
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
long triggerAtTime = SystemClock.elapsedRealtime() + INTERVAL;//从开机到现在的毫秒(手机睡眠(sleep)的时间也包括在内
Intent i = new Intent(this, AlarmReceive.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this, PENDING_REQUEST, i, PENDING_REQUEST);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pIntent);
return super.onStartCommand(intent, flags, startId);
}
}
public class AlarmReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, AlarmService.class);
context.startService(i);
}
}
到了这里,关于【Android】之【延时执行的几种方法】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!