AlarmManager的使用与几个获取时间的操作

AlarmManager

        定时器,会到指定的时间时执行相应的操作。

        获取AlarmManager:

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

常量说明

        ELAPSED_REALTIME:真实时间流逝,当手机休眠时不进行相应的操作。

        ELAPSED_REALTIME_WAKEUP:真实时间流逝。当手机休眠时也进行相应的操作。

        RTC:手机时间流逝。当手机处于休眠状态时,不进行相应的操作。

        RTC_WAKEUP:手机时间流逝。当手机处于休眠状态时,也进行相应的操作。

        ELAPSED与RCT的最大区别:后者是根据手机的时间来的,也就是说可以通过更改手机上的时间,影响操作的执行时间;而前者却是真实的时间流逝,即使更改了手机时间,也不会影响操作的执行时间

以上的四个值都是常用方法中type的取值。

        INTERVAL_DAY:一天。

        INTERVAL_FIFTEEN_MINUTES:十五分钟。

        INTERVAL_HALF_DAY:半天。

        INTERVAL_HALF_HOUR:半小时。

        INTERVAL_HOUR:一小时。

常用方法

        set(type, triggerAtMillis, operation):设置一个闹钟(这里指的是定时执行的任务),该任务不会重复执行。到时间后会执行operation指向的操作。其中triggerAtMillis指的是操作开始执行的时间,如果该时间小于当前的时间,那么会立即执行operation

        setRepeating(type, triggerAtMillis, intervalMillis, operation);设置一个闹钟,该闹钟会定时、重复执行。其中intervalMillis指的是两次执行之间相隔的时间。其余的同上。

        setInexactRepeating(type, triggerAtMillis, intervalMillis, operation);和setRepeating方法类似。区别是:setInexactRepeating不一定会在指定的时间处执行,有可能会有偏差(是为了更节约能量),而setRepeating却是在给定的时刻执行,不会有偏差。

        cancel():取消相应的操作。

示例

Intent intent = new Intent(MainActivity.this, MyService.class);
		final PendingIntent pendingIntent = PendingIntent.getService(this, 100,
				intent, PendingIntent.FLAG_UPDATE_CURRENT);

		final AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
		manager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 24
				* 60 * 60 * 1000 + 60 * 1000, 1000, pendingIntent);
		findViewById(R.id.btn_change).setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				manager.cancel(pendingIntent);
			}
		});

获取时间方法

        System.currentTimeMillis:获取系统时间,该时间是从1970年1月1日开始计时的,一直到系统当前的时间。要注意:由于系统的时间可以人为的进行修改,它得到的值也是从1970年到修改后的时间,并不一定是真正的当前时间。例如:当前4月14日,如果手机的时间被更改为4月15日,那么它得到的值就是到4月15日的,并不是到4月14的。

        SystemClock.elapsedRealtime():得到的是系统开机后的时间,即使系统的时间不是真正的时间也可以得到正确的开机时长。并且把系统休眠的时间也计算在内

        SystemClock.uptimeMillis:和上面的一个基本类似,唯一区别是:该方法不把系统休眠的时间计算在内






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值