Android平台上常用定时器

转载 2016年06月02日 09:18:31

Android平台定时器有两个:

java源生的Timer

Android新引入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来实现。




相关文章推荐

android平台定时器介绍

  • 2013-09-02 17:04
  • 20KB
  • 下载

米狗族 Android平台Qt开发入门教程

很多人会问,Android平台可以不使用Java开发应用程序?? 我做Android平台native开发之前,也有这么想过,但是我又想,底层系统全是c/c++代码,用c/c++开发Android...

深入了解android平台的jni---编译ffmpeg源码

环境: 操作系统:Ubuntu 10.04 ffmpeg源码版本:ffmpeg-0.6.1 android ndk版本:android-ndk-r5b-linux-x86 目的: 用来了解f...

20个国内Android平台移动应用市场

20个国内Android平台移动应用市场 http://luckerme.com/archives/677.html 虽然苹果公司的APP Store是应用商店的鼻祖,但是从单从应用商店的数量...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)