Android平台上常用定时器
2016-06-02 09:18
375 查看
Android平台定时器有两个:
java源生的TimerAndroid新引入AlarmManager
Timer:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Timer timer = new Timer(); timer.schedule(new MyTimerTask(), 2000); } static class MyTimerTask extends TimerTask { @Override public void run() { /* */ } }Timer实际上就是封装了一个Thread、一个TimerTask队列、这个TimerTask按照一定的方式排队执行。但是,如果此时cpu进入了休眠状态,这个Thread就会因为失去了cpu而阻塞,导致我们定时任务失败。
比如:我们设置一个任务5分钟后执行,可手机不到一分钟就能锁屏进入休眠了,这时候我们这个任务就会执行失败。
AlarmManager:
AlarmManager是Android用来管理时钟的类,可以在手机休眠时候正常运行,到达预设时间时,唤醒cpu来执行任务。所以,如果我们用AlarmManager来定时执行任务,cpu可以正常休眠,只有在需要运行任务时醒来一段很短的时间。如何选择:
短时间的任务,可以通过Timer来实现,比如延时几百毫秒,几秒后执行某个任务。
对于长时间的定时任务,考虑到手机休眠导致的任务失败,改用AlarmManager来实现。
相关文章推荐
- ruby中执行周期性任务(定时任务)的3种方法
- C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析
- 详解C#中的定时器Timer类及其垃圾回收机制
- C#使用timer实现的简单闹钟程序
- C#中timer定时器用法实例
- 使用mysql事件调度器定时删除binlog
- C#自定义基于控制台的Timer实例
- C#中的Timer和DispatcherTimer使用实例
- php实现的Timer页面运行时间监测类
- .NET中的Timer类型用法详解
- ASP中实现执行定时任务的方法
- 调试WordPress中定时任务的相关PHP脚本示例
- asp.net中Timer无刷新定时器的实现方法
- java定时任务的实现方式
- node.js中使用node-schedule实现定时任务实例
- 详解PHP实现执行定时任务
- .NET Framework中定时器timer的单线程与多线程使用讲解
- php定时计划任务的实现方法详解
- PHP定时执行任务的3种方法详解
- 详解PHP执行定时任务的实现思路