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来实现。




二进制转换与此平台上的长模式不兼容

在VMware Workstation上安装CentOS操作系统时,弹出窗口“二进制转换与此平台上的长模式不兼容”。...
  • u013806814
  • u013806814
  • 2015年09月07日 23:56
  • 11903

vmware 解决"二进制转换与此平台上的长模式不兼容"

https://my.vmware.com/cn/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/12_0  ...
  • zxchhyg
  • zxchhyg
  • 2017年04月11日 15:49
  • 1051

解决VMWare中“二进制转换与此平台上的长模式不兼容,此虚拟环境中的长模式将被禁用”问题

解决VMWare中“二进制转换与此平台上的长模式不兼容,此虚拟环境中的长模式将被禁用”问题     【转自】http://blog.sina.com.cn/s/blo...
  • yucaifu1989
  • yucaifu1989
  • 2017年12月16日 12:34
  • 720

(六)相机程序开发

今天我们来讲一下在Android平台上开发相机的问题!Two choices! 第一种使用intent方法来调用系统方法 一般以动作按钮的方式来操作,101仅作为一个标示 [java] vi...
  • languobeibei
  • languobeibei
  • 2016年12月05日 19:16
  • 173

更新部署在Azure中的生产环境 - Cloud Service & Java

当我们把一个应用部署到Windows Azure,投入生产以后,我们往往需要更新这个应用。例如:修改Bug, 增加新功能等等。这时,为了确保生产环境的服务可用性,我们不希望一次更新带来很长宕机时间。本...
  • AzureIncubationChina
  • AzureIncubationChina
  • 2013年12月27日 13:46
  • 1775

解决vmware“二进制转换与此平台长模式不兼容.....”的问题

问题说明: 启动vmware出现:1、二进制转换与此平台长模式不兼容....等等字样; 2、vmware启动一会,系统直接重启,这个现象出现在惠普电脑上 问题原因: 出现这样的原因一般都是由于系统...
  • enson16855
  • enson16855
  • 2014年06月12日 15:50
  • 37499

Windows平台上编译Qt-4.8.x Debug版注意事项

Windows平台上编译Qt-4.8.x Debug版注意事项 跳转至: 导航、 搜索 目录 1 为什么要编译qt-4.8.x的Windows ...
  • cteng
  • cteng
  • 2014年09月16日 09:55
  • 1372

【转】解决VMWare中“二进制转换与此平台上的长模式不兼容,此虚拟环境中的长模式将被禁用”问题

【转自】http://blog.sina.com.cn/s/blog_63b15fc901019wkn.html 在使用Windows7 64位操作系统时,无法运行VMWare或MS Virtu...
  • u011388616
  • u011388616
  • 2014年02月12日 13:04
  • 52200

深入了解JVM、JRE、JDK 什么是JVM、JRE、JDK

1、什么是JVM 大多数人知道JVM让java跨平台,但跨平台是怎么一回事呢?首先得了解一下。 跨平台:对于计算机而言,只认识一种语言,也就是0、1   序列组成的机器指令,当使用C/C++等高级...
  • a2534725767
  • a2534725767
  • 2017年11月14日 00:11
  • 98

Hadoop平台上Oozie调度系统的安装配置

4.1              解压安装包 tar -xzf oozie-3.3.2-distro.tar.gz 4.2              修改addtowar.sh脚本 由于OOZI...
  • HENRYfabrgeas
  • HENRYfabrgeas
  • 2014年04月18日 16:33
  • 1509
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android平台上常用定时器
举报原因:
原因补充:

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